본문 바로가기

영속성4

JPA - 고급맵핑 - 요구사항 분석과 맵핑4 - 참조: 자바 ORM 표준 JPA 프로그래밍 - Fetch 설정 기억을 되살리기 위해 우리가 요구사항 분석과 맵핑3 까지 작성했던 UML 을 다시 한번 살펴보자. 클래스 간의 연관관계의 다중성을 JPA 코드로 작성할 때 별다른 Fetch 전략을 작성하지 않았었다. 만약 Project 팀에서 기본 전략을 지연 로딩으로 설정하기로 합의했다면 Fetch 를 설정해줘야 한다. Default 설정으로 @OneToMany, @ManyToMany 는 지연 로딩으로 설정되어있으므로 @OneToOne, @ManyToOne 을 설정해주자. 주문(Order) 와 주문 상품(Order Item) 의 @OneToOne, @ManyToOne 이 대상이다. @Entity @Table(name = "ORDERS") public c.. 2021. 7. 18.
JPA - 영속성 전이와 고아 객체 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 영속성 전이: CASCADE 여태까지 예제를 수행할 때 부모 와 자식 엔티티 연관에서 한 가지 불편한 점이 있었을것이다. Parent 가 Child 엔티티를 참조하는 상황에서 Parent 와 Child 가 모두 영속된 상태여야 연관관계가 맵핑됐었다. JPA 에서는 특정 엔티티를 영속 상태로 만들 때 CASCADE 옵션으로 연관된 엔티티도 함께 영속 상태로 만들어주는 영속성 전이 기능을 제공한다. @Entity public class Parent{ @Id @GeneratedValue @Column(name = "PARENT_ID") private Long id; private String name; @OneToMany(mappedBy = "parent") .. 2021. 7. 17.
JPA - 영속성 관리 - 영속성 컨텍스트 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 영속성 컨텍스트 영속성 컨텍스트는 엔티티를 식별자 값(@Id - 기본 키) 으로 구분하므로 영속 상태는 식별자 값이 반드시 있어야 한다. 영속성 컨텍스트의 엔티티는 커밋하는 순간 DB에 반영하는데 이를 플러시(flush) 라고 한다. 영속성 컨텍스트는 아래 기능을 제공한다. 1차 캐시 동일성 보장 트랜잭션을 지원하는 쓰기 지연 변경 감지 지연 로딩 - 엔티티 조회 영속성 컨텍스트는 내부에 캐시를 갖고 있는데 이를 1차 캐시라고 한다. 영속 상태의 엔티티는 모두 이곳에 저장되며, @Id 로 맵핑한 식별값을 이용하여 구분한다. String id = "ID#1"; Member member = new Member(); member.setId(id); member.. 2021. 6. 24.
JPA - 환경구축 및 객체맵핑, persistence.xml - 참조: 자바 ORM 표준 JPA 프로그래밍 - 참조: http://www.h2database.com/html/tutorial.html#creating_new_databases - 환경 구축 JPA Project를 시작하기 위해 환경을 구축해보자. 환경설정은 STS(Spring Tool Suit) 의 Spring Starter Project 를 이용한다. 아래 그림을 참조하여 Maven과 Java 8 version 을 선택한다. 그 다음 화면에서 Dependency 를 고를 수 있다. Spring Web 과 Template 엔진으로 Thymeleaf 를 기본으로 선택해준다. H2 DB와 Spring Data JPA 를 선택한다. 설치를 끝냈으면 h2 를 다운받아야 한다. H2는 In-memory 형으로.. 2021. 6. 23.