desarrollo de aplicaciones con un amigo, pero se encontró con una pregunta ... tuve este código:HibernateTransactionManager o JpaTransactionManager
<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>
y quitó todo, cambié a:
<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>
Dijo que este es un mejor enfoque, pero no explicó exactamente por qué. Algo acerca de no usar Hibernate directamente, ¿significa esto que ya no usaremos Hibernate? ¿Es realmente mejor enfoque?
DAO cambiado la siguiente manera:
tuve:
@Autowired
private SessionFactory sessionFactory;
public void addUser(User user) {
sessionFactory.getCurrentSession().save(user);
}
Ahora es:
@PersistenceContext
private EntityManager entityManager;
public void addUser(User user) {
entityManager.persist(user);
}
También tengo esta pregunta adicional: Si uso la configuración de modo JPA, ¿hay alguna diferencia si uso la dependencia de hibernación 3.X o la hibernación 4.X? – grep