@Entity public class Member { @Id @GeneratedValue private Long id; private String name; private int age; }기본 자료형이나 그에 해당 하는 래퍼 클래스 (String 등) 을 기본값 타입 으로 정의해당 값들은 식별자를 가지지 않고, 엔티티의 생명주기에 종속엔티티 인스턴스가 삭제되는 경우 함께 삭제다른 엔티티와 공유되어서는 안됨. Uploaded by N2T
임베디드 타입JPA 에서 복합 값을 임베디드 타입을 통해 구현가능하다복합값?여러 값을 하나로 모아서 표현하는 값임베디드 타입엔티티에 속하는 값 타입으로, 복잡한 객체의 모델을 단순화할때 유용@Entity public class Member { @Id @GeneratedValue private Long id; private String name; @Temporal(TemporalType.DATE) private Date startDate; @Temporal(TemporalType.DATE) private Date endDate; private String city; private String street; private String zipcode; //.... }위 코드의 경우 이름, 근무 시작일 종료일 ..
개요데이터 타입의 가장 큰 분류엔티티 타입@Entity 로 정의하는 객체값 타입int , Integer, String 등의 기반 타입 혹은 래퍼 클래스임베디드 타입복합적인 값 타입컬렉션 값 타입List Set 등의 컬렉션 타입 Uploaded by N2T
@Entity @Getter @ToString public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "parent", orphanRemoval = true, fetch = LAZY) @ToString.Exclude private List children = new ArrayList(); }테스트@DataJpaTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class SpringTest { @Autowired private EntityManag..
변경감지 (더티 체킹)영속성 컨텍스트의 경우 모든 엔티티의 스냅샷(최초 로드 상태) 을 보유함flush 호출시 영속성 컨텍스트는 각 엔티티의 현재 상태와 스냅샷 비교→ 변경된 내용을 탐색 ( 속성의 변경)SQL 생성변경된 엔티티에 대해 SQL 생성새로운 엔티티persist 로 호출 추가된 경우INSERT 문 수행변경된 엔티티속성 값의 변경UPDATE 문 수행삭제된 엔티티remove 로 호출 추가된 경우DELETE 문 수행고아 객체의 제거의 경우orphanRemoval = true컬렉션에서 제거된 엔티티에 대해 DELETE 문을 생성캐시 동기화DB 실행 후 영속성 컨텍스트의 내부의 1차 캐시가 최신상태로 유지FLUSH 자체가 트랜잭션을 COMMIT 하는 것은 아닙니다.별도의 commit() 의 호출을 통해..
package com.example.springboot3.test; import jakarta.persistence.*; import lombok.Getter; import java.util.ArrayList; import java.util.List; @Entity @Getter public class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "parent", cascade = jakarta.persistence.CascadeType.PERSIST) private List children = new ArrayList(); }@Getter @Setter @Enti..