Free Lines Arrow
본문 바로가기
728x90

DataBase/JPA40

[JPA] CASCADE CASCADE 영속성 전이라고 한다. 연관된 엔티티를 같이 영속화 하는 기능이다. 연관관계 맵핑이랑 전혀 상관이 없다. CASCADE를 안쓰는 경우 Parent 가 Child를 List 로 가지고 있을경우 일반적일때는 Parent도 persist 를 해줘야 하고 child도 persist를 해줘야 한다. 코드 지금까지 배운 내용을 보면 당연하다. parent 도 영속성 컨텍스트로 넣어주고 child1, child2 도 영속성 컨텍스트로 넣어줘야 한다. @Entity public class Parent { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; // cascade 를 해주면 child는 알아서 저장된다. // collection안.. 2021. 8. 22.
[JPA] Lazy 와 Eager Lazy 란? 지연로딩이라고 한다. 언제쓸까? Member 객체안에 Team 객체가 있다고 생각해봅시다. Member 안에 team을 쓰는 경우가 드물다면? 보통은 Member 를 조회하면 안에 있는 Team도 같이 조회가 된다. 그렇게 되면 불필요한 연산이 추가가 되는 것이다. Lazy를 사용하면 된다. Lazy 예제 FetchType.LAZY 를 써주면 된다. - @ManyToOne(fetch = FetchType.LAZY) Member class @Entity public class Member { @Id //PK 설정 @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "name", nullable = false,.. 2021. 8. 19.
[JPA] 프록시 프록시 JPA에서 객체를 조회 할때 find 함수 왜에도 getReference 가 있다. getReference 를 할 경우 프록시를 가져온다. 프록시는 일단 가짜 엔티티 라고 생각하자. 멤버가 팀을 가지고 있는 구조에서 멤버만 find 했을때 항상 Team 도 같이 불러 온다. 꼭 그래야 할까? 아니다 Proxy를 사용했을때 멤버에서 팀을 호출 하는 순간 쿼리가 조회된다. 프록시의 구조 실제 클래스를 상속 받아 만들어 진다. 실제 클래스와 겉 모양이 같다. 하이버네이트가 내부의 라이브러리를 사용해서 가짜 엔티티 객체를 준다. 아래 그림을 보면 실제 Entity 를 상속 받아서 Proxy가 만들어 진다. 프록시는 껍대기 라고 생각하면 된다. - 실제로는 ID 값만 가지고 있다. 프록시는 어떤 역할을 하.. 2021. 8. 11.
[JPA] @MappedSuperclass @MappedSuperclass 해당 어노테이션은 공통속성을 만들어서 사용할때 쓴다. 테이블과 관계 없고 단순히 공통으로 사용하는 정보를 모으는 역할만한다. 언제쓸까? 예를 들어 대부분 테이블에 다음과 같은 속성이 들어가야된다 해보자 createBy(생성한사람) createTime(생성시간) modifiedBy(수정자) lastModifiedTime(마지막 수정시간) 그렇다면 JPA 에서 모든 클래스를 전부다 찾아서 넣어줘야 될까? 절대 아니다 MappedSuperclass 로 공통 클래스를 하나 만들고 상속만 해주면된다. 구현 공통 클래스 구현 @MappedSuperclass 어노테이션을 붙여서 공통클래스를 설정해주었다. // 해당 어노테이션을 쓰면 // 상속 받은 모든 클래스에 해당 속성만 들어가게 .. 2021. 8. 9.
728x90
반응형