본문 바로가기

인프런 jpa2

JPA - 객체와 테이블 매핑 feat. 데이터베이스 스키마 자동생성 객체와 테이블 매핑 (@Entity, @Table)@Entity@Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수※ 주의• 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자)• final 클래스, enum, interface, inner 클래스 사용X• 저장할 필드에 final 사용 X @Entity의 속성• JPA에서 사용할 엔티티 이름을 지정한다.• 기본값: 클래스 이름을 그대로 사용(예: Member)• 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.  @Table@Table은 엔티티와 매핑할 테이블 지정.속성기능기본값name매핑할 테이블 이름엔티티 이름을 사용catalog데이터베이스 catal.. 2022. 4. 8.
JPA - 플러시 플러시 발생 영속성 컨텍스트의 변경내용을 데이터 베이스에 반영한다. 구체적으로 다음과 같은 일이 순차적으로 일어난다. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다(등록, 수정, 삭제 쿼리) 참고로 플러시는 영속성 컨텍스트를 비우지 않는다. 플러시는 영속성 컨텍스트의 변경 사항들과 DB의 상태를 맞추는 작업이다. 영속성 컨텍스트의 변경내용을 DB에 동기화한다. 영속성 컨텍스트를 플러시하는 방법 em.flush() - 직접호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동호출 1. 직접호출 // 영.. 2022. 4. 8.