@Entity
: JPA가 관리할 객체
@Id
: 데이터베이스 PK와 매칭
회원 등록, 수정 , 삭제, 수정 ,단건 조회 기능
영속성 컨텍스트 의미
EntityManger.persist(entity)
엔터티의 생명주기
영속성 컨텍스트 장점
em.find(Member.class,"member1")
을 실행하면 데이터베이스가 아닌 1차 캐시에서 데이터를 탐색==
으로 비교해도 true
값이 나와 동일성을 보장em.persist(member)
까지는 INSERT SQL을 데이터베이스에 보내지 않음Update
라는 쿼리문을 사용하지 않고 영속 엔터티를 수정해도 변경을 감지하여 어플리케이션 내부에서 Update
구문이 전송됨플러시
em.flush(), transaction.commit(), JPQL 쿼리 실행
을 하면 플러시가 호출준영속 상태로 만드는 법
em.detach(entity)
em.clear()
em.close()
@Entity
@Table
@Column(nullable=false,length=10)
필드와 컬럼 매핑
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
}
@Column
: 컬럼매핑@Temporal
: 날짜타입 매핑@Enumerated
: enum 타입 매핑@Lob
: BLOB,CLOB 매핑@Transient
: 특정 필드를 컬럼에 매핑 x@Column
@Enumerated
@Temporal
기본키 매핑 방법
@Id
사용@GeneratedValue
)IDENTITY
: 데이터베이스에 위임SEQUENCE
: 데이터베이스 시퀀스 오브젝트 사용AUTO
: 방언에 따라 자동 지정IDENTITY 전략
em.persist()
시점에 즉시 INSERT SQL을 실행하고 DB에서 식별자를 조회