2012-04-05 3 views
0

JPA는 본질적으로 JDBC의 추상화입니다. EntityManager에는 setAutoFlushMode API가 있습니다. AUTO 또는 COMMIT로 설정할 수 있습니다. JDBC에있어서 이것과 동등한 것은 무엇입니까? 감사합니다.JDBC의 EntityManger flushmode

답변

4

JDBC에도 자동 커밋이 있습니다.

둘 다 라이브러리가 자동으로 데이터베이스에 커밋해야하는지 여부를 구성하기위한 것입니다.

JDBC 자동 커밋은 매우 단순하며 데이터베이스에 대한 모든 업데이트를 즉시 커밋합니다. 자동 확약이 없으면, 변경은 확약 메소드가 호출 될 때까지 확약되지 않습니다.

JPA AUTO는 쿼리가 실행되기 전에 데이터베이스에 플러시를 발생시킵니다. find와 같은 간단한 연산은 라이브러리가 검색을 처리 할 수 ​​있기 때문에 플러시가 필요하지 않지만 쿼리가 훨씬 복잡해 지므로 AUTO가 설정되면 먼저 플러시됩니다. 모드가 COMMIT로 설정된 경우 커밋 또는 플러시 호출시 데이터베이스에 대한 변경 사항 만 플러시합니다. COMMIT가 설정되고 쿼리가 실행되면 플러시되지 않은 결과는 반환되지 않습니다.

+0

감사합니다. JPA가 자동으로 데이터베이스로 플러시 될 때 tranasction이 확약됩니까? 검색어와 다른 점은 무엇입니까? – dublintech

+0

아니요, 트랜잭션이 커밋되지 않았습니다. "find"는 예를 들어 "findById"와 같이 쿼리 범주에 대해 일반적으로 사용되는 단어입니다. – esej