Home
Hyeonsu Lim
Cancel

11. 영속성 전이

01. 영속성 전이 1:1 단방향 연관의 예를 들면 두 엔티티를 새로 생성한 뒤 저장하려면 EntityManager.persist()를 이용해서 두 엔티티를 모두 저장해야 한다. 이럴 때 영속성 전이를 사용하면 연관된 객체를 손쉽게 함께 저장할 수 있다. 영속성 전이는 엔티티의 영속성 상태 변화를 연관된 엔티티에도 함께 적용하는 것이다. 예) 엔티티...

10. 엔티티 콜렉션 매핑

01. 엔티티 콜렉션 매핑과 연관 관리 엔티티 콜렉션 매핑은 코드를 복잡하게 만들고, 얻을 수 있는 장점은 크지 않다. 게다가 잘못 사용하면 성능에 영향까지 줄 수 있다. 하지만 콜렉션 매핑이 필요한 순간이 있기 때문에 어떻게 설정해야하는지 알 필요가 있다. 예) 스포츠 팀과 소속 선수와의 관계 public class Team{ privat...

9. 값의 콜렉션 매핑

01. 값 콜렉션 JPA는 String, Int와 같은 단순 값에 대한 콜렉션을 지원한다. 또 @Embeddable로 설정한 밸류 값에 대한 콜렉션도 매핑할 수 있다. (List, Set, Map, Collection) 02. 단순 값 List 매핑 유적지 관광객을 위한 하루 이동 경로 목록을 제공하기 위한 모델을 예로 들면 관광 경로 정보를 담기...

8. 엔티티간 N:1 단방향 연관

01. 엔티티의 N:1 연관 엔티티를 구현하다보면 같은 타입의 여러 엔티티 객체가 다른 타입의 한 엔티티를 참조해야 할 때가 있다. 예) 호텔에 대한 리뷰처럼 한 개의 호텔에 대해 다수의 리뷰를 달 수 있는 경우 이때 리뷰 입장에서 보면 한개 이상의 리뷰가 한 개의 호텔을 참조하게 된다. 즉 리뷰와 호텔은 N:1 관계를 갖는다. 02. 참조키를 ...

7. 엔티티간 1:1 연관 그리고 즉시 로딩과 지연 로딩

01. 키를 참조하는 1:1 연관 매핑 예) 서비스에서 사용자에게 멤버십 카드를 발급해 준다고 하면 시스템은 사용자를 표현하기 위한 User 엔티티와 멤버십 카드를 표현하기 위한 MembershipCard 엔티티를 갖게 된다. 한 명의 사용자는 한 장의 멤버십 카드를 소유할 수 있다고 가정했을 때 User 엔티티와 MembershipCard는 1:1 ...

6. 영속 객체의 라이프사이클

01. 영속 객체의 라이프사이클 개요 영속 객체는 영속 컨텍스트와의 연관 상태에 따라 관리됨, 분리됨, 삭제됨 상태를 갖는다. JPA는 영속 컨텍스트에 보관된 객체의 변경 내역을 추적한다. JPA의 영속 컨텍스트를 통해서 관리되는 상태의 영속 객체는 관리됨 상태를 갖는다. 이 시점에 트랜잭션 범위 안에서 변경하면 커밋 시점에 변경 내역을 DB에 ...

5. EntityManager, 영속 컨텍스트, 트랜잭션

01. EntityManager와 영속 컨텍스트 EntityManager entityManager = emf.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction(); try{ transaction.begin(); Sight sight = enti...

4. 밸류와 @Embeddable

01. 밸류로 의미 더 드러내기 Hotel 클래스는 주소 자체를 의미하는 address 데이터를 갖고 있다. 그리고 Address 클래스는 zipcode, address1, address2를 데이터로 갖고 있어 따로 유추하지 않아도 주소가 우편번호, 주소1, 주소2로 구성된다는 것을 알 수 있다. Address 클래스 같은 타입을 value라고 ...

3. 엔티티

01. 엔티티 클래스 JPA에서 엔티티는 영속성을 가진 객체로서 가장 중요한 타입이다. JPA의 엔티티는 DB 테이블에 보관할 대상이 된다. EntityManager를 사용해서 엔티티 단위로 저장하고 조회하고 삭제한다. JPA는 두 가지 방법으로 엔티티를 설정하는데 1)@Entity 애노테이션을 사용하는 방법 2)XML 매핑 설정을 사용하는 방법이 ...

2. JPA 시작하기

01. 예제 프로젝트 02. 메이븐 프로젝트 생성 및 이클립스 임포트 03. 데이터베이스 생성 04. 모델 클래스와 매핑 설정 @Entity //1) @Table(name="user") //2) public class User { @Id //3) private String email; private String name; //4...