Skip to Content
Suffering builds character
아카이브17.JPA11.엔티티 삽입

11.엔티티 삽입

앞서 Java 코드를 통해 생성한 인스턴스를 엔티티 매니저가 제공하는 persist(Entity)를 통해 영속성 컨텍스트에서 추적, 관리하는 Managed 상태가 되었음

managed_state

persist(Entity)의 메서드로 전달된 book 인스턴스는 tx.commit()을 통해 트랜잭션이 커밋될 때 다음과 같이 INSERT 쿼리가 생성되어 데이터베이스에 저장하는 작업이 수행됨

SQL
INSERT INTO book values ...

2. tx.commit()이 호출되었을 경우

EntityTransaction 객체를 통해 tx.commit()을 수행할 경우 commit() 수행 직전에 내부적으로 flush()가 호출됨

💡
Tip

flush()

영속성 컨텍스트의 캐시에 보관되어있는 엔티티 참조 정보와 DB 내 레코드를 비교한 후,
영속성 컨텍스트 - 데이터베이스 테이블 간 동기화(Synchronize)를 수행하는 메서드

결과적으로 DB에는 해당 레코드가 존재하지 않기 때문에 INSERT Query가 수행됨

Sample.java
tx.commit(); // 내부적으로 flush()가 호출됨

insert_after_flush

Last updated on