Bonsoir tous le monde,
J'ai un problème que je n'arrive pas à résoudre.
J'ai une application fonctionnant sous Spring et Hibernate intégrée à un serveur d'application JBoss.
Pour une requête j'ai un traitement qui ajoute un nouvel enregistrement à un table. Là tout marche correctement. Chaque requête génère bien un enregistrement.
Par contre lorsque je stoppe mon serveur d'application, tous les enregistrements crées précédements sont supprimés. (C'est bête)
Je pense que celà doit venir de la gestion des transactions, mais j'ai tout essayé en vain.
Si quelqu'un à un idée c'est bien volontiers.
D'avance merci et bonne soirée.
Soraya.
P.S Si je n'utilise pas Spring, je n'ai pas ce problème.
Hibernate version: 3.2
Spring version: 2.0.1
Name and version of the database : DB400 for iSeries
Code qui ajoute l'enregistrement
Code:
public User create(String id, String name) {
Session session = this.sessionFactory.openSession();
UserTransaction tx;
try {
tx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
tx.begin();
User user = new User();
user.setId(id);
user.setName(name);
session.save(user);
session.flush();
tx.commit();
session.close();
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Configuration Hibernate Code:
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:as400://192.168.10.106;extended dynamic=true;package=jbpkg;package cache=true;package library=jboss;errors=full</property>
<property name="connection.username">XXX</property>
<property name="connection.password">XXX</property>
<property name="connection.driver_class">com.ibm.as400.access.AS400JDBCDriver</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.DB2400Dialect</property>
<property name="hibernate.current_session_context_class">jta</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup
</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="ch/isys/best/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
Fichier de mapping Code:
<hibernate-mapping>
<class name="ch.isys.best.User" table="USER" schema="WRKJMTJAVA" catalog="S657E7ED">
<id name="id" column="ruser">
</id>
<property name="name" column="rname"></property>
<property name="service" column="rserv"></property>
</class>
</hibernate-mapping>
Fichier de mapping Code:
<beans>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean id="userDao" class="ch.isys.best.core.security.dao.manager.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>