스프링 동면 템플릿 사용 시기 및 이유는?
안녕하세요, 웹 서비스(CXF + Spring 사용)의 응답을 처리하여 데이터베이스에 저장하는 소규모 웹 서비스 응용 프로그램을 현재 개발 중입니다.데이터베이스 작업을 위해 Hibernate(3.5)를 사용하고 있습니다.웹에서 Hibernate + Spring 예제를 검색하면 HibernateTemplate의 사용법을 자주 볼 수 있기 때문에 이 순간에 대해 조금 혼란스러워서 다음과 같이 묻고 싶었습니다.
Hibernate3 애플리케이션에서 HibernateTemplate를 사용하십니까?HibernateTemplate는 언제 개발 생활을 개선할 수 있으며 어떤 점에 따라 사용해야 하는지 여부를 결정할 수 있습니까?
감사해요.
모든 스프링 템플릿(하이버네이트, jdbc, 휴식, jpa 등)은 장단점이 동일합니다.
프로: 일반적인 설정 루틴을 수행하므로 보일러 플레이트를 건너뛰고 원하는 논리에 집중할 수 있습니다.
반대: 애플리케이션을 스프링 프레임워크에 단단히 결합하고 있습니다.이러한 이유로 스프링은 다음을 추천합니다.HibernateTemplate
더 이상 사용되지 않습니다.
구체적으로, 무엇을HibernateTemplate
코드가 실행된 후 자동으로 세션을 열고 닫으며 커밋 또는 롤백 트랜잭션을 수행하는 것입니다.그러나 이 모든 것은 Spring's Declarative Transaction Management를 사용하여 측면 지향적인 방식으로 달성할 수 있습니다.
참조:
- Spring Reference : ORM : 현재 제안된 Spring Hibernate 사용 패턴에 대한 Hibernate
- 스프링 기준:고전적인 봄 용도: 동면
업데이트:
스프링 3.1(및 최신 버전) 현재 제거되었습니다.현재 제안된 사용 패턴은 최대 절전 모드를 참조하십시오.
Spring의 Hibernate Template는 앞으로 지원되지 않을 것이라는 점을 한 가지 분명히 하겠습니다. 즉, Hibernate 4+ 버전은 Hibernate Template를 지원하지 않습니다.따라서 Sean이 제안한 대로 선언적 거래 관리를 사용하는 것이 좋습니다.
Hibernate Template는 생활을 보다 쉽게 할 수 있도록 여러 가지 내용을 캡슐화합니다.
그것을 사용하든지 말든지는 당신의 선택에 달려있습니다.이 경우에는 최대 절전 모드 없이 데이터베이스로 작업할 수 있습니다.봄의 JDBC 제품은 아주 좋습니다.Hibernate를 배울 필요 없이 문제를 해결하는 것이 더 쉽다는 것을 알 수 있습니다.
오픈세션InViewFilter 패턴이 유효합니다.이렇게 하면 모든 요청을 처리하는 동안 최대 절전 모드 세션이 열리고 스레드에 바인딩됩니다.세션 열기또한 InView는 세션 및 로드 가능성을 View 렌더링 및 View 계층까지 확장하여 ('그냥 작동'할 수 있도록 함으로써) 커플링 및 복잡성을 줄입니다.
제 철학은 측면 기반/선언적 거래 관리에 동의하지 않습니다.저는 주요 상태 변경/라이프사이클 이벤트를 '명시적'으로 만드는 것을 좋아합니다. 이는 효과가 있을 수도 있고 없을 수도 있는 여러 은닉 및 간접 계층에 약하게 의존하지 않고 절대적으로 명확해야 하기 때문입니다.
디버그할 수 있는 지점을 제공합니다.
TX 커밋은 코드의 한 줄에 불과하지만, 이는 중단하고자 하는 주요 코드입니다.더 이상 통사적으로, '거래적' 선언보다 더 이상 없습니다. 하지만 훨씬 더 확실합니다.
솔직히 저는 트랜잭션을 시작하고 트랜잭션을 제어하기에 적절한 장소인 "사용자 명령" 또는 "요청"이 애플리케이션 내에서 잘 구성되고 잘 식별되며 상당히 명확해야 한다고 생각합니다.
(저는 처음 나왔을 때 시도해보고, Aspect class-loading한 것들을 작동시키는 데 어려움을 겪었습니다.잘 작성된 OOO 코드에 비해 측면은 한계값만 제한적이라는 게 제 평가입니다.)
팁: 저는 일반적으로 세션과 거래를 실행하는 것을 매우 편리하게 하기 위해 도우미 수업을 만듭니다.
HbHelper나 뭐 그런 거.
모든 템플릿은 앞으로 더 이상 사용되지 않습니다.JPA의 표준인 entity manager를 사용하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/4067775/spring-hibernate-template-when-to-use-and-why
'programing' 카테고리의 다른 글
Shared Resources를 통한 ASP.NET Core Localization (0) | 2023.09.28 |
---|---|
자바 langClassNotFoundException: org.springframework.boot.스프링 어플리케이션 메이븐 (0) | 2023.09.28 |
mod deflat 루트의 하위 디렉토리를 압축하지 않음 (0) | 2023.09.28 |
ARM에 대한 새로운 리브와 함께 GCC를 교차 컴파일: -march와 같은 GCC 옵션을 지정하는 방법? (0) | 2023.09.28 |
WireMock 포트를 보다 동적으로 만들어 테스트 서비스에 사용하려면 어떻게 해야 합니까? (0) | 2023.09.23 |