DB/JPA

·DB/JPA
EntityManager 클래스의 getReference() 메서드를 사용해서 프록시 엔티티를 조회 할 수 있다.getReference()를 사용해서 객체를 얻게 되면, 데이터베이스에서 조회를 미룰 수 있다. 이때, HibernateJPA에서는 Proxy 객체를 반환해준다.해당 프록시 객체는 실제 클래스를 상속해서 만들어 졌기 때문에, 겉 모양이 같으며, 사용자 입장에서는 구분하지 않고 사용할 수 있다.프록시 객체는 실제 객체의 참조(target)를 보관하고, 프록시 객체를 호출하면 프록시 객체는 실제  객체의 메서드를 호출한다. 프록시 객체는 처음 사용할 때 한 번만 초기화 되며, 실제 엔티티로 바뀌는 것이 아니다.(ex: 초기화시 MemberProxy&kfjsd13 -> Member 로 바뀐다는 것이..
·DB/JPA
관계형 데이터베이스는 상속 관계가 없다. -> 슈퍼타입 서브타입 관계라는 모델링 기법이 상속과 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법에는각각 테이블로 생성조인 전략 -> 1 순위통합 테이블로 생성단일 테이블 전략 (Default) -> 2 순위서브타입 테이블로 생성구현 클래스마다 테이블 전략 -> 3 순위 (사용X) 3가지로 나눌 수 있다. 조인 전략 import jakarta.persistence.*;@Entity@Inheritance(strategy = InheritanceType.JOINED)@DiscriminatorColumn(name = "DTYPE")//자식 테이블에서는 @DiscriminatorValue로 커스텀 가능public abstract class I..
·DB/JPA
다중성 다대일@ManyToOne일대다@OneToMany일대일@OneToOne다대다@ManyToMany사용하면 안됌 단방향, 양방향 연관 관계테이블외래 키 하나로 양쪽 조인 가능객체참조용 필드 있는 쪽으로만 참조 가능한쪽만 참조하면 단방향양쪽시 서로 참조하면 양방향(Member -> Team, Team -> Member 단방향 2개로 보는 것이 맞음)   다대일 [N:1]다대일 [N:1] 단방향가장 많이 사용하는 연관관계다대일 [N:1] 양방향양쪽을 서로 참조하도록 개발보통 외래키는 N쪽에 붙는데 N쪽이 연관 관계의 주인이 되는 설계가 좋음위 그림에서 List members에 mappedBy   일대다 [1:N]일대다 [1:N] 단방향 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인테이블 일..
·DB/JPA
public void save(Item item){ if(item.getId() == null) { em.persist(item); } else { em.merge(item); } JPA의 경우 해당 객체가 변경이 있으면(JPA의 변경 감지 = dirty checking)자동으로 DB와 동기화 시켜주는 것으로 알고 있는데 merge는 무엇일까? 준영속 엔티티준영속 엔티티는 영속성 컨테스트에서 관리하지 않는 엔티티를 부르는 것으로,트랜잭션에서 벗어나거나 특정 메서드 호출 (영속성 컨텍스트에서 떼어내거나, 영속성 컨테스트를 초기화하거나)등의 이유로 만들어 지는데, 아래의 Book 또한 준영속 엔티티이다.@PostMapping("it..
동그리담
'DB/JPA' 카테고리의 글 목록 (2 Page)