복붙노트

[SPRING] 사용할 내용 플러시 모드 '자동'또는 '커밋'

SPRING

사용할 내용 플러시 모드 '자동'또는 '커밋'

내 제목이 설명 된대로, 내 응용 프로그램에서 최대 절전 모드 자동 플러시 모드 메커니즘을 사용하고 있습니다. 따라서, 최대 절전 모드 영속 객체의 데이터를 변경하면 자동으로 데이터베이스에 반영됩니다. 나는 이것을 원하지 않는다. 그래서 대신 FlushMode Commit을 사용하는 해결책을 찾았습니다.

그래서 여기에 내 실제 질문입니다 :

http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/FlushMode.html

해결법

  1. ==============================

    1.Hibernate (와 JPA)는 영속 객체에 대한 변경을 데이터베이스에서 자동으로 감지하고 유지하도록 설계되었습니다. "저장"작업이 없습니다.

    Hibernate (와 JPA)는 영속 객체에 대한 변경을 데이터베이스에서 자동으로 감지하고 유지하도록 설계되었습니다. "저장"작업이 없습니다.

    저장하지 않으려면 분리 된 객체를 사용해야합니다. StatelessSession을 사용하여로드하거나 객체를로드 한 후 detach를 호출하십시오. 이렇게하면 자동으로 모니터를 저장하는 모니터링에서 제거됩니다.

    홍조 설정을 엉망으로하지 마라, 그것은 단지 당신에게 두통을 나중에 줄 것이다.

  2. ==============================

    2.응용 프로그램에서 쿼리를 사용하면 FlushMode.COMMIT가 각 쿼리 전에 세션을 플러시하지 않으므로 성능이 향상 될 가능성이 큽니다. 필자는 javadoc마다 필요한 경우에만 세션을 플러시해야한다는 것을 알고 있지만 FlushMode.COMMIT는 읽기 전용 세션에서 더 나은 성능을 보입니다. 자동 플러시는 영구 객체의 변경 사항이 즉시 데이터베이스에 게시됨을 의미하지 않습니다.

    응용 프로그램에서 쿼리를 사용하면 FlushMode.COMMIT가 각 쿼리 전에 세션을 플러시하지 않으므로 성능이 향상 될 가능성이 큽니다. 필자는 javadoc마다 필요한 경우에만 세션을 플러시해야한다는 것을 알고 있지만 FlushMode.COMMIT는 읽기 전용 세션에서 더 나은 성능을 보입니다. 자동 플러시는 영구 객체의 변경 사항이 즉시 데이터베이스에 게시됨을 의미하지 않습니다.

    FlushMode.AUTO (기본값)를 사용할 때 위에 작성했듯이 데이터베이스에 대한 모든 쿼리 (HQL, Criteria, SQL 쿼리) 전에 세션을 플러시하여 결과에 현재 세션에 추가 된 모든 엔터티가 포함되도록합니다.

  3. from https://stackoverflow.com/questions/18149876/what-to-use-flush-mode-auto-or-commit by cc-by-sa and MIT license