[SPRING] spring / hibernate : 매번 세션 열기 / 닫기 VS getCurrentSession
SPRINGspring / 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.Hibernate에 대한 나의 expereince에 기초하여, 나는 Hibernate 세션 수명을 단일 트랜잭션의 지속 시간과 일치시키는 것이 가장 좋은 전략이라는 결론에 도달했다. 귀하의 구체적인 필요에 따라, 당신은 다른 것을해야 할 수도 있습니다,하지만 제안 된 시작은 실제적인 경우의 95 %에서 작동 할 것입니다.
Hibernate에 대한 나의 expereince에 기초하여, 나는 Hibernate 세션 수명을 단일 트랜잭션의 지속 시간과 일치시키는 것이 가장 좋은 전략이라는 결론에 도달했다. 귀하의 구체적인 필요에 따라, 당신은 다른 것을해야 할 수도 있습니다,하지만 제안 된 시작은 실제적인 경우의 95 %에서 작동 할 것입니다.
from https://stackoverflow.com/questions/15256931/spring-hibernate-open-close-session-each-time-vs-getcurrentsession by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Condition / ConfigurationCondition 인터페이스를 구현하는 클래스에서 @Value 또는 Environment를 작동시키는 방법 (0) | 2019.05.21 |
---|---|
[SPRING] Validator를 사용한 스프링 유닛 테스트 문제 (0) | 2019.05.21 |
[SPRING] 주석으로 주석 된 메소드의 aspect는 다른 주석으로 주석 처리됩니다. (0) | 2019.05.21 |
[SPRING] Spring 통합 ftp 인바운드 어댑터를 사용하여 처리 된 파일을 다른 디렉토리로 이동 (0) | 2019.05.21 |
[SPRING] Entity 객체를 JSON으로 변환 (0) | 2019.05.21 |