복붙노트

[SPRING] spring / hibernate : 매번 세션 열기 / 닫기 VS getCurrentSession

SPRING

spring / hibernate : 매번 세션 열기 / 닫기 VS getCurrentSession

이 접근법과 다른 접근법의 차이점은 무엇입니까? 지금까지 다음과 같은 코드 조각이 있습니다.

public void delete(Song song) {
    session = sessionFactory.getCurrentSession();
    session.delete(song);
    session.flush();
}

그러나 위의 코드가 실행될 때 레코드가 항상 삭제되는 것은 아닙니다 (정확하게 : id = 1은 절대로 삭제되지 않고 다른 id는 항상 삭제됨). 열린 세션을 유지하면 애플리케이션 속도가 빨라진다는 점을 읽었습니다. 이것이 세션 객체를 공유하는 이유입니다. 내 비즈니스 객체가 DI를 통해 세션 팩토리를 가져옵니다.

@Autowired
private SessionFactory sessionFactory;

Session session = null;

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

해결법

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

    1.Hibernate에 대한 나의 expereince에 기초하여, 나는 Hibernate 세션 수명을 단일 트랜잭션의 지속 시간과 일치시키는 것이 가장 좋은 전략이라는 결론에 도달했다. 귀하의 구체적인 필요에 따라, 당신은 다른 것을해야 할 수도 있습니다,하지만 제안 된 시작은 실제적인 경우의 95 %에서 작동 할 것입니다.

    Hibernate에 대한 나의 expereince에 기초하여, 나는 Hibernate 세션 수명을 단일 트랜잭션의 지속 시간과 일치시키는 것이 가장 좋은 전략이라는 결론에 도달했다. 귀하의 구체적인 필요에 따라, 당신은 다른 것을해야 할 수도 있습니다,하지만 제안 된 시작은 실제적인 경우의 95 %에서 작동 할 것입니다.

  2. from https://stackoverflow.com/questions/15256931/spring-hibernate-open-close-session-each-time-vs-getcurrentsession by cc-by-sa and MIT license