목록JPA (15)
Rootable의 개발일기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OE9nR/btsrv0twRnT/Z9S8riwIkCibGTTdJfWBK0/img.png)
📌 임베디드 타입(Embedded Type)이란 주로 기본 값 타입을 모아서 새로운 값 타입을 직접 정의하는 것을 말하며, 복합 값 타입이라고도 한다. 임베디드 타입을 포함한 모든 값 타입은 값 타입을 소유한 Entity에 생명 주기를 의존한다. 🔎 예제 Member 엔티티에서 날짜와 관련된 속성, 주소와 관련된 속성처럼 특정 주제와 관련된 값 타입들을 묶어 새로운 값 타입을 정의할 수 있다. 📌 사용 방법 임베디드 타입도 Proxy를 사용하기 때문에 기본 생성자가 필요하다. 더보기 임베디드 타입 Proxy Reference: https://jiwondev.tistory.com/231 JPA #9 값 타입, 컬렉션, 임베디드 타입 JPA에서는 2가지 데이터 타입을 제공한다. @Entity 는 데이터가 변..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzzJvu/btsrys21XKc/8PRQpq8RvMleVyJo295Rbk/img.png)
📌 JPA의 데이터 타입 분류 🔎 엔티티 타입 @Entity로 정의하는 객체로 데이터가 변해도 식별자로 지속해서 식별/추적 가능한 타입이다. 🔎 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다. 식별자가 없고 값만 있으므로 추적이 불가능하다. ✔ 값 타입 분류 1. 기본 값 타입 자바 기본 타입(int, double) : 생명 주기를 Entity에 의존 래퍼 클래스(Integer, Long) String 값 타입은 공유하면 안된다. 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 객체이지만 변경은 안된다. 2. 임베디드 타입 3. 컬렉션 값 타입 📌 값 타입과 불변 객체 🔎 부작용(Side Effect) 값 타입은 항상 값을 복사해서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OZLIM/btsrv7LHLJa/f75jzs85qF16Qb1YBTtvO1/img.png)
📌 영속성 전파의 필요성 위와 같은 관계에서 연관 관계의 주인은 Child이고, Child를 단독으로 사용하는 Parent 엔티티를 부모 엔티티로 간주한다. 여기서 다음 코드를 수행하면 몇 번의 저장이 발생할까 이렇게 총 3번의 저장이 발생한다. 그런데 Parent는 여러 Child를 단독으로 사용한다. 그렇다면 Parent에서 특정 작업을 했을 때, 모든 Child에 영향을 주는 방법이 없을까? 그래서 등장한 것이 영속성 전이다. 📌 영속성 전이(CASCADE) 특정 엔티티를 영속 상태로 만들 때, 연관된 엔티티도 함께 영속 상태로 만들고자 할 때 사용한다. 여기서 영속 상태로 만든다는 것은 저장, 삭제, 병합 등을 수행한다는 것이고, 이러한 작업은 영속 상태일 때 가능하다. 결국 영속성 전이는 부모 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/C6hNf/btsrv7ksewh/RI1m1lKTaVTZmcJaSLPF9K/img.png)
📌 단독 조회 Member와 Team이 있고, Member는 Team의 참조값을 가진 상태라고 할 때, 다음 명령문에서 어떤 조회 쿼리가 나가야 할까 Member findMember = em.find(Member.class, member.getId());System.out.println("findMember = " + findMember.getName()); 위 명령문은 조회한 회원의 이름을 출력하는 것이다. 그런데 해당 명령을 수행하기 위해 아래와 같은 쿼리가 실행되었다. 위 결과를 보면 회원 이름을 출력하기 위해 회원과 연관된 Team을 조인으로 가져오는 것을 볼 수 있다. 만약, 회원과 연관된 엔티티가 몇 개씩 있다면 조인문은 더욱 복잡해질 것이다. 이처럼 단독 조회를 최적화하기 위한 방법과 ..