@GeneratedValue JPA 에서 제공하는 애노테이션이며, 엔티티 식별자 생성을 JPA 에서 위임하는 애노테이션 `GeneratedValue.java` @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() default GenerationType.AUTO; String generator() default ""; } `GenerationType.java` public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO; } 식별자의 생성 전략을 지정할..
서론 JPA 가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 와 매핑한 엔티티를 실제로 사용하는 부분으로 나눌 수 있다. 이러한 엔티티들은 엔티티 매니저를 통해 관리 (사용) 할 수 있다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리 는 말 그대로 엔티티 매니저를 만드는 공장 이다. 엔티티 매니저 팩토리는 생성 비용이 매우 크기 때문에, 애플리케이션 당 하나만 만들어 애플리케이션 전체에서 공유 해야 한다. 팩토리가 생성 될 때, 커넥션 풀도 생성된다. 엔티티 매니저 는 엔티티를 저장, 수정, 삭제 조회 등 엔티티와 관련된 모든 일을 수행한다. 이름 그대로 엔티티를 관리하는 관리자 역할이다. 엔티티 매니저는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않으며, 일반적으로 트..
개발용 데이터베이스 선택하기 일반적으로 많이 사용하는 MySQL이나 Oracle 데이터베이스를 사용해도 되지만 설치비용이 크다. 학습 및 테스트 용도로 많이 사용하는 H2 데이터베이스를 사용하자 H2데이터베이스를 설치 및 서버 모드로 실행한 뒤 http://localhost:8082 웹 콘솔로 접근하여 H2 데이터베이스에 접근이 가능하다. H2 Database http://www.h2database.com/ 최고의 실습용 DB 1.5M로 가볍다. 웹 콘솔을 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션이 가능하다. 시퀀스, AutoIncrement 기능을 지원한다. H2 Database Engine (redirect) H2 Database Engine Welcome to H2, the fre..
서론 현대에 와서 대부분의 자바 애플리케이션들은 관계형 데이터베이스 를 데이터 저장소로 사용한다. 데이터베이스를 활용해서 데이터를 관리하려면 결국 SQL 을 사용해야한다. SQL 을 직접 다룰때 발생하는 문제 반복, 그리고 SQL 의존적인 개발 일반적으로 회원 관련 기능을 만든다고 가정했을때의 간단한 예제를 살펴보자. // 엔티티 클래스 class Member { private String memberId; private String name; } // DAO 클래스 class MemberDAO { private Member find(String memberId) {...} private void save(Member member) {...} } INSERT INTO MEMBER VALUES (...) ..