복붙노트

[SPRING] 왜 HibernateTemplate이 추천되지 않는가? [복제]

SPRING

왜 HibernateTemplate이 추천되지 않는가? [복제]

내가 최대 절전 모드 3에서 getHibernateTemplate ()하는 데 사용되었고, 지금은 최대 절전 모드 4로 이동하고 있으며 다음 클래스를 찾지 못했습니다.

org.springframework.orm.hibernate4.support.HibernateDaoSupport;

그리고 여기 나는 그것을 사용하는 것이 더 이상 권장되지 않는다는 것을 읽었습니다.

http://forum.springsource.org/showthread.php?117227-Missing-Hibernate-Classes-Interfaces-in-spring-orm-3.1.0.RC1

누군가 왜 나를 설명 할 수 있을까요? 그리고 최대 절전 모드 4에서는 이제 커밋, 닫기, getHibernateTemplate () 메서드에 의해 자동으로 관리되는 트랜잭션 플러시와 같은 모든 작업을 수행해야합니까?

해결법

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

    1.주요 목표는 SessionFactory.getCurrentSession ()이 존재하지 않을 때 현재 Spring 트랜잭션에 연결된 Hibernate 세션을 얻는 것이었기 때문에. 지금은 존재하기 때문에 (그리고 오랜 시간 동안 : Hibernate3 패키지에서도 HibenateTemplate 사용이 권장되지 않는다.) SessionFactory.getCurrentSession ()을 사용하는 대신이 Spring 특정 클래스를 사용하여 현재 Spring에 연결된 세션을 가져올 이유가 없다. 트랜잭션.

    주요 목표는 SessionFactory.getCurrentSession ()이 존재하지 않을 때 현재 Spring 트랜잭션에 연결된 Hibernate 세션을 얻는 것이었기 때문에. 지금은 존재하기 때문에 (그리고 오랜 시간 동안 : Hibernate3 패키지에서도 HibenateTemplate 사용이 권장되지 않는다.) SessionFactory.getCurrentSession ()을 사용하는 대신이 Spring 특정 클래스를 사용하여 현재 Spring에 연결된 세션을 가져올 이유가 없다. 트랜잭션.

    Spring을 사용한다면 선언적 트랜잭션 관리를 사용해야한다. 이것은 열기, 커밋, 닫기 및 플러싱을 피할 수있게한다. 그것은 모두 Spring에 의해 자동으로 수행됩니다.

    @Autowired
    private SessionFactory sessionFactory;
    
    @Transactional
    public void someMethod() {
        // get the session for the current transaction:
        Session session = sessionFactory.getCurrentSession();
        // do things with the session (queries, merges, persists, etc.)
    }
    

    위의 예제에서 트랜잭션은 메소드 호출 전에 시작될 것이다 (아직 시작되지 않았다면). 세션은 Spring에 의해 트랜잭션을 위해 생성 될 것이고, 세션은 트랜잭션의 커밋 전에 자동으로 플러시 될 것입니다. 이것은 메소드가 리턴 할 때 자동으로 Spring에 의해 수행 될 것입니다.

  2. from https://stackoverflow.com/questions/18002768/why-hibernatetemplate-isnt-recommended by cc-by-sa and MIT license