मित्र के साथ आवेदन का विकास, लेकिन एक सवाल में भाग ... मैं इस कोड था:HibernateTransactionManager या 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>
और वह यह सब हटा दिया, करने के लिए इसे बदल दिया है:
<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>
उन्होंने कहा, यह बेहतर दृष्टिकोण है, लेकिन बिल्कुल स्पष्ट क्यों नहीं किया। सीधे हाइबरनेट का उपयोग न करने के बारे में कुछ, क्या इसका मतलब यह है कि हम अब हाइबरनेट का उपयोग नहीं कर रहे हैं? क्या यह वास्तव में बेहतर दृष्टिकोण है?
डीएओ इस तरह बदल दिया है:
मैं था:
@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);
}
मेरे पास यह अतिरिक्त प्रश्न भी है: यदि मैं जेपीए तरीके कॉन्फ़िगरेशन का उपयोग करता हूं, तो क्या कोई अंतर है यदि मैं हाइबरनेट 3.X निर्भरता या हाइबरनेट 4.X का उपयोग करता हूं? – grep