
고아 객체 예제 Parent 수정 @OneToMany(mappedBy = "parent",cascade = CascadeType.ALL, orphanRemoval = true) // 양방향 매핑 완료, CASCADE옵션 추가, 고아객체 제거 private List childList = new ArrayList(); JpaMain public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.g..

영속성 전이(CASCADE) 즉시 로딩, 지연 로딩, 연관관계 매핑과 전혀 관계가 없음. 영속성 전이: 저장 영속성 전이: CASCADE - 주의! CASCADE의 종류 예제 Parent @Entity @NoArgsConstructor public class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent") // 양방향 매핑 완료 private List childList = new ArrayList(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNa..

Member와 Team을 자주 함께 사용한다면? 즉시 로딩 EAGER 를 사용해서 함께 조회 Member 엔티티 변경 즉시 로딩 즉시 로딩(EAGER), Member 조회 시 항상 Team도 조회. JpaMain public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //팀도 세팅 Team team = new Team();..

반복된 고민 예시 Member - Team을 살짝 변경 JpaMain public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //팀도 세팅 Team team = new Team(); team.setName("teamA"); em.persist(team); Member member1 = new Member(); member1..

Member를 조회할 때 Team도 함께 조회해야 할까? 실습 Member와 Team을 조회해서 가져오려고 하면 그러면 어느 경우에는 Team까지 함께 가져오고, 어떨 때는 Member만 가져오는 쿼리를 날릴 수 있을까에 대한 고민 JpaMain public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //데이터를 넣었다고 ..

요구사항 추가 • 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다. • 모든 데이터는 등록일과 수정일이 필수다. 도메인 모델 도메인 모델 상세 테이블 설계 고친 클래스 Item 추상 클래스로 바꾸고 전략 명시 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn public abstract class Item { } Album @Entity public class Album extends Item { private String artist; private String etc; public String getArtist() { return artist; } public void setArtist..

@MappedSuperclass 예시 상황가정 이 애플리케이션은 모든 곳에 등록, 수정과 관련된 정보가 항상 있어야 한다. 이 때 Member에 private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate; 써 줘도 되지만 번거롭고 중복되므로 BaseEntity로 묶어서 새로 하나 만들고, @MappedSuperClass 넣어주고, 나머지 클래스는 이 클래스를 상속받게 만든다. BaseEntity @MappedSuperclass // 매핑 정보만 받는 부모클래스 public class BaseEntity { private String..