분류 전체보기
@Entity @Entity가 붙은 클래스는 JPA가 관리하는 객체이며, 엔티티라고 부른다. 기본 생성자가 필수이다. final 클래스, enum, interface, inner 클래스 사용이 불가능하다. name 속성 @Entity(name = "user") public class Member { } JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용한다. (Member) 가급적 기본값을 사용하는 것을 권장한다. @Table 엔티티와 매핑할 테이블을 지정한다. @Table(name = "user") @Entity public class Member { } name 속성은 매핑할 테이블의 이름을 지정하고, 기본값은 엔티티 이름을 그대로 사용한다. @Column 엔티티 내의 필드..
영속성 컨텍스트 "엔티티를 영구 저장하는 환경" 이라는 뜻으로 JPA를 이해하는데 가장 중요한 용어 이다. 엔티티 매니저(EntityManager)를 통해서 영속성 컨텍스트에 접근할 수 있다(한다). 추상적인 개념이다.(눈에 보이지 않음) 엔티티의 생명주기 비영속(new/transcient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트가 관리하는 상태 준영속(detached) : 영속성 컨텍스트에서 관리되었다가 분리되어 관리되고 있지 않은 상태 삭제(removed) : 삭제된 상태 비영속(new/transcient) 엔티티매니저에 의해서 아무런 조치가 취해지지 않은 상태, 즉 영속성 컨텍스트와 전혀 관계가 없는 상태를 말한다. 소스코드 예시 //객체를 생성..
순차 탐색 순차 탐색은 우리가 가장 처음 어떤 프로그래밍 언어를 배우든간에 반복문을 배울 때 자주쓰던 익숙한 탐색 알고리즘이다. 말 그대로 리스트(배열) 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 순차적으로 탐색하는 알고리즘이다. 코드 예시를 하나 들어보면 다음과 같다. import java.util.Scanner; public class MySourceCode { public static int sequentialSearch(String[] arr, String target){ for(int i = 0; i < arr.length; i++){ //찾는 문자열이 있다면 인덱스 출력 if(arr[i].equals(target)){ return i; } } //찾는 문자열이 없다면 -1 출력 retur..
참고한 자료 : www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 의존관계 주입 DI(Dependency Injection) Spring에서 의존관계 주입이란 다음과 같이 정의한다. 어떤 객체에 스프링 컨테이너가 또 다른 객체에 의존성을 맺어주는 행위 인터페이스..
정렬(Sorting) 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 의미한다. 정렬 알고리즘은 엄청 다양하지만 보통 사용하는 알고리즘중에는 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬 등이 있다. 그리고 자바에는 배열의 정렬을 제공하는 라이브러리와 컬렉션 프레임워크에서도 적용할 수 있는 정렬 라이브러리가 있어서 같이 활용해도 좋다. 배열의 정렬 라이브러리 int[] arr = new int[]{3,2,1,5,4}; Arrays.sort(arr); for(int a: arr){ System.out.print(a + " ");//1 2 3 4 5 } ArrayList 정렬 라이브러리 import java.util.*; ArrayList list = new ArrayList(); list.add(3)..
DFS (Depth-First-Search) 깊이 우선 탐색 - 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 그래프는 노드와 간선으로 표현되며 노드는 index로 표현하고 간선은 distance로 표현 스택 자료구조를 이용 BFS(Breath-First-Search) 너비 우선 탐색 - 그래프에서 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘 큐 자료구조를 이용 그래프는 다음 2가지 방식으로 표현 가능하다. 인접 행렬 : 2차원 배열로 그래프의 관계를 표현 인접 리스트 : 리스트로 그래프의 관계를 표현 인접 행렬 방식 public static final int INF = (int)1e9; public static int[][] graph = new int[][]{ {0,5,3}, {5,0,IN..
스택(Stack)과 큐(Queue) 란? 기본 자료구조 중 하나이다. 이 때, 자료구조란 데이터를 표현하고 관리하고 처리하기 위한 구조를 의미한다. 스택과 큐 는 두 핵심적인 함수로 구성된다. 삽입(Push) : 데이터를 삽입한다. 삭제(Pop) : 데이터를 삭제한다. 스택(Stack) 스택은 박스 쌓기에 비유가능하다. 나중에 쌓아올린 박스가 제일 먼저 꺼낼 수 있다. 후입선출(LIFO), 선입후출(FILO) 구조라고 한다. public static void main(String[] args) { Stack stack = new Stack(); stack.push(1); //스택에 1을 삽입 stack.push(2); //스택에 2를 삽입 stack.push(3); //스택에 3을 삽입 stack.pop..
좋은 객체지향설계의 5가지 원칙 - SOLID SRP : 단일 책임 원칙 OCP : 개방-폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존관계 역전 원칙 이 5가지 원칙을 잘 지키는 사람이 Java를 잘 하는 사람이자 객체지향설계를 잘 하는 사람이고, Spring 을 잘하는 사람이 될 수 있다. SRP(Single responsibility principle) 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야 한다. 모호할 수도 있는 첫 번째 말인데... 중요한 문제는 변경이다. 변경이 있을 때 다른 클래스에 미치는 파급 효과가 적으면 SRP를 잘 지킨 것이다. OCP(Open-closed principle) 개방-폐쇄 원칙 변경에는 닫혀있으나 확장에는 열려있어..



