최대 절전 모드 트랜잭션 관리자 또는 Jpa 트랜잭션 관리자
친구와 함께 응용프로그램을 개발하는 중인데, 질문에 부딪혔습니다.나는 다음 코드를 가지고 있었습니다.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="dataSource" ref="dataSource" />
<property name="sessionFactory" ref="sessionFactory" />
</bean>
그리고 그는 그것을 모두 제거하고 다음과 같이 바꿨습니다.
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="persistenceUnit"/>
<property name="dataSource" ref="dataSource"/>
</bean>
그는 이것이 더 나은 접근법이라고 말했지만, 그 이유를 정확히 설명하지는 않았습니다.동면을 직접 사용하지 않는 것에 대한 무언가, 이것은 우리가 더 이상 동면을 사용하지 않는다는 것을 의미합니까?정말로 더 나은 접근인가요?
DAO는 다음과 같이 변경되었습니다.
가지고 있었습니다.
@Autowired
private SessionFactory sessionFactory;
public void addUser(User user) {
sessionFactory.getCurrentSession().save(user);
}
지금은:
@PersistenceContext
private EntityManager entityManager;
public void addUser(User user) {
entityManager.persist(user);
}
그는 당신의 코드가 하이버네이트 대신 JPA에 의존하길 원합니다.javax.persistence.EntityManager
는 JPA(Java EE) 표준 인터페이스입니다.org.hibernate.SessionFactory
는 Hibernate 속성 인터페이스입니다.SessionFactory에서 EntityManager로 이동하면 클래스가 더 이상 최대 절전 모드에 종속되지 않습니다.동면 도로 대신 JPA 도로를 사용하는 것이 오늘날 대부분의 사람들에게 최선의 방법으로 여겨지고 있습니다.
JPA 공급자가 필요하므로 시스템은 여전히 최대 절전 모드에 종속되어 있습니다.하지만 앞으로 다른 JPA 프로바이더로 변경하려면 꽤 간단해야 합니다.JPA를 선택하는 또 다른 장점은 JPA 인터페이스가 Hibernate 인터페이스보다 안정적이라는 것입니다.
언급URL : https://stackoverflow.com/questions/12337504/hibernatetransactionmanager-or-jpatransactionmanager
'programing' 카테고리의 다른 글
인식할 수 없는 특성 이름 MODULE(class com.sun.tools.javac.util)입니다.SharedNameTable$NameImppl) (0) | 2023.09.28 |
---|---|
MySQL 데이터베이스에 DECIAL을 삽입하는 방법 (0) | 2023.09.28 |
CG_CONTECT_SHOW_BACKTRACE 환경변수는 어떻게 설정할 수 있습니까? (0) | 2023.09.28 |
AngularJS로 1초마다 카운트다운하는 메시지를 표시하려면 어떻게 해야 합니까? (0) | 2023.09.28 |
MySQL의 ANSI 드라이버와 유니코드 드라이버의 차이 (0) | 2023.09.28 |