JPA flush와 commit을 공부하는 궁금한 점을 발견했다.
// EntityManager em;
Memo memo = new Memo();
memo.setId(4L);
memo.setUsername("Flush");
memo.setContents("Flush() 메서드 호출");
em.persist(memo);
System.out.println("flush() 전");
em.flush();
System.out.println("flush() 후\n");
System.out.println("트랜잭션 commit 전");
et.commit();
System.out.println("트랜잭션 commit 후");
em.persist(memo) => actionQueue insert 쓰기 지연(size=1)

em.flush()

insert query문 확인

DB에는 반영이 되어 있지 않다???

em.commit()


flush를 다시 공부했을때 그 원인을 알게 되었다.
마지막 내용 즉 트랜잭션 작업으로 인해서 도중에 실패하는 작업이 있을 수 있다 때문에 중간에 ROLLBACK을 수행할 수 있기에 모든 작업이 완료된 이후에 DB에 반영하는것이다.
[참고자료]