programing

스프링 동면 템플릿 사용 시기 및 이유는?

closeapi 2023. 9. 28. 08:23
반응형

스프링 동면 템플릿 사용 시기 및 이유는?

안녕하세요, 웹 서비스(CXF + Spring 사용)의 응답을 처리하여 데이터베이스에 저장하는 소규모 웹 서비스 응용 프로그램을 현재 개발 중입니다.데이터베이스 작업을 위해 Hibernate(3.5)를 사용하고 있습니다.웹에서 Hibernate + Spring 예제를 검색하면 HibernateTemplate의 사용법을 자주 볼 수 있기 때문에 이 순간에 대해 조금 혼란스러워서 다음과 같이 묻고 싶었습니다.

Hibernate3 애플리케이션에서 HibernateTemplate를 사용하십니까?HibernateTemplate는 언제 개발 생활을 개선할 수 있으며 어떤 점에 따라 사용해야 하는지 여부를 결정할 수 있습니까?

감사해요.

모든 스프링 템플릿(하이버네이트, jdbc, 휴식, jpa 등)은 장단점이 동일합니다.

프로: 일반적인 설정 루틴을 수행하므로 보일러 플레이트를 건너뛰고 원하는 논리에 집중할 수 있습니다.

반대: 애플리케이션을 스프링 프레임워크에 단단히 결합하고 있습니다.이러한 이유로 스프링은 다음을 추천합니다.HibernateTemplate더 이상 사용되지 않습니다.

구체적으로, 무엇을HibernateTemplate코드가 실행된 후 자동으로 세션을 열고 닫으며 커밋 또는 롤백 트랜잭션을 수행하는 것입니다.그러나 이 모든 것은 Spring's Declarative Transaction Management를 사용하여 측면 지향적인 방식으로 달성할 수 있습니다.

참조:


업데이트:

스프링 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

반응형