में हाइबरनेट लेनदेन प्रबंधक कॉन्फ़िगरेशन मेरी प्रोजेक्ट में मैं प्रोग्रामेटिक लेनदेन सीमांकन के साथ हाइबरनेट का उपयोग करता हूं। हर बार मेरी सेवा विधियों में मैं कुछ इसी तरह लिखता हूं।स्प्रिंग
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
.. perform operation here
session.getTransaction().commit();
अब मैं घोषणात्मक लेनदेन प्रबंधन के साथ अपने कोड को दोबारा करने जा रहा हूं। क्या मैं अब मिल गया ...
<context:component-scan base-package="package.*"/>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mySessionFactory"/>
</property>
</bean>
सेवा वर्ग:
@Service
public class TransactionalService {
@Autowired
private SessionFactory factory;
@Transactional
public User performSimpleOperation() {
return (User)factory.getCurrentSession().load(User.class, 1L);
}
}
और साधारण परीक्षण - Lazy
@Test
public void useDeclarativeDem() {
FileSystemXmlApplicationContext ctx = new FileSystemXmlApplicationContext("spring-config.xml");
TransactionalService b = (TransactionalService)ctx.getBean("transactionalService");
User op = b.performSimpleOperation();
op.getEmail();
जब मैं लेन-देन की विधि के बाहर मौजूद उपयोगकर्ता ईमेल प्राप्त करने की कोशिश, मुझे मिल गया प्रारंभिक अपवाद, ईमेल मेरा मामला एक साधारण स्ट्रिंग है। हाइबरनेट एसक्यूएल क्वेरी भी नहीं करता है, जब तक कि मैं अपने POJO पर किसी भी गेटर्स को कॉल नहीं करता।
1) मैं यहां क्या गलत कर रहा हूं?
2) क्या यह दृष्टिकोण मान्य है?
3) क्या आप किसी भी ओपन सोर्स प्रोजेक्ट का सुझाव दे सकते हैं जो एनोटेशन आधारित कॉन्फ़िगरेशन के साथ वसंत/हाइबरनेट पर काम करता है?
अद्यतन
किसी कारण से अगर मैं getCurrentSession की जगह openSession के साथ इस कोड ठीक काम करता है। क्या कोई इसे समझा सकता है?
धन्यवाद
क्या एक उपयोगकर्ता के लिए एक अलग तालिका में ईमेल है? –
उसी तालिका में सरल स्ट्रिंग – user12384512