본문 바로가기
728x90

김영한 JPA3

[JPA] 영속성 전이, 고아 객체 (cascade 범위) JPA 영속성 전이 JPA는 CASCASE 옵션으로 영속성 전이를 제공한다. JPA 영속성 전이란, 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태가 되게(영속화), 혹은 함께 삭제가 이뤄지게 하는 것이다. 쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. 위와 같이 Parent와 Child가 일대다 관계를 맺었다고 하고 부모쪽에서 cascade옵션을 설정해보자. @Entity public class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST) private List children = n.. 2022. 9. 24.
[JPA] Entity 연관관계 매핑 (연관관계의 주인) 패러다임의 불일치 '객체지향 프로그래밍' 은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 정치들을 제공한다. 이에 반해 '관계형 데이터베이스'는 추상화, 상속 다형성 같은 개념이 없다. 데이터 중심으로 구조화되어 있고 집합적인 사고가 필요하다. 이러한 객체와 관계형 데이터베이스의 패러다임 불일치 문제를 해결하는데 많은 시간과 코드가 소비된다. 연관관계 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 (참조로 연관된 객체를 조회) 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 가진다. (join으로 연관된 테이블 조회) 객체를 테이블에 맞춰 모델링? 그럼 객체를, 테이블과 똑같이 모델링하면 어떻게 될까? 예시를 하나 들어본다. 데이터베이스에는 아래 그.. 2022. 9. 21.
[JPA] JPA의 구동방식, 영속성 컨텍스트 (영속성 컨텍스트의 장점) 1. JPA의 구동방식 JPA의 구동방식을 살펴보면 아래와 같이 META-INF라는 곳 아래에 persistence.xml을 설정정보로 참고한 뒤 EntityManagerFactory를 생성하고 거기서 EntityManager를 생성해서 요청을 실행한다. EntityManagerFactory와 EntityManager? 어플리케이션은 단 하나의 EntityManagerFactory를 가지는데, 어플리케이션이 실행하면 생성하고 종료하면 소멸한다. 실제 DB 사용을 담당하는 EntityManager는 하나의 Thread(Transaction)가 생성될 때마다 EntityManagerFactory가 생성해 준다. 이를 코드로 구현하면 다음과 같다. public class JpaMain { public stat.. 2022. 9. 20.
728x90