JPA(16)
-
@Entity
@Entity @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에서 사용할 수 없다. 저장할 필드에 final 사용할 수 없다. 속성: name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그대로 사용(예: Member) 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.
2021.01.17 -
스키마 자동 생성
스키마 자동 생성 스키마 생성 DDL을 어플리케이션 실행 시점에 생성해준다. 데이터베이스 방언에 따라 DDL을 만들어 준다. 스키마 자동 생성은 운영서버에는 절대 적용하지말고 개발에만 적용하자 스키마 자동 생성 설정 이름: hibernate.hbm2ddl.auto 옵션 설명 create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경된 내용을 업데이트 validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 스키마 자동 생성시 주의 사항 운영 장비에는 절대 create, create-drop, update 사용하면 안된다. 개발 초기 단계는 create 또는 update 테스트 서버..
2021.01.17 -
flush()
flush() 변경 감지 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) flush()가 호출될때 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동 호출 -> JPQL이 실행되는 시점에 선행된 쿼리가 JPQL이 실행된 결과에 영향을 줄 수 있어 플러시가 자동 호출되는것이 기본값. flush 모드 옵션 예시) em.setFlushMode(FlushModeType.COMMIT) FlushModeType.AUTO - 커밋이나 쿼리를 실행할 때 플러시 (기본값) FlushModeType.COMMIT - 커밋할 때만 플러시 -> JPQL이 실행되는 시점에 flush()를 자동 호..
2021.01.17 -
영속성 컨텍스트와 엔티티
영속성 컨텍스트 엔티티를 영구 저장하는 환경 논리적인 개념이라 눈에 보이지 않는다. 엔티티 매니저를 통해 접근 가능하다. 1차 캐시와 쓰기 지연 SQL 저장소가 있다. 역할 1차 캐시 -> 키, 벨류로 엔티티의 키와 엔티티를 저장해두고 한 트랜젝션 안에서만 캐시로 사용. 동일성(identity) 보장 -> 한 트랜젝션 안에서 영속 상태인 엔티티에 대해서는 동일한 엔티티를 보장해준다. 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) -> JDBC batch와 같은 기능으로 flush()가 호출되기 전에는 쓰기 지연 SQL 저장소에 SQL이 저장되어 있다가 flush()가 호출되면 저장된 SQL이 DB로 전송된다. 이 기능은 옵션으로 버퍼 사이즈를 설정할 수 있다. 변경 감..
2021.01.17