Bonsoir,

Je suis un peu paumé avec le Transaction manager. J'utilise Spring 2.5.5 et Hibernate 3.3.2

Pour le moment, j'ai ce code qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
	    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
	    <property name="url" value="jdbc:hsqldb:mem:/openpronosdb"/>
	    <property name="username" value="sa"/>
	    <property name="password" value=""/>
	</bean>
 
	<bean id="mySessionFactory"
	 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	    <property name="dataSource" ref="myDataSource"/>
	    <property name="mappingResources">
	        <list>
	            <value>org/simon/openpronos/model/User.hbm.xml</value>
	        </list>
	    </property>
	    <property name="hibernateProperties">
	        <props>
				<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
				<prop key="hibernate.show_sql">false</prop>
				<prop key="hibernate.current_session_context_class">thread</prop>
			</props>
	    </property>
	</bean>
 
	<bean id="securityDao" class="org.simon.openpronos.dao.SecurityDaoImpl">
		<property name="sessionFactory" ref="mySessionFactory"/>
	</bean>

Dans ma classe SecurityDaoImpl j'ai ce bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		User userAuthenticated = null;
 
		Query query = session.createQuery("FROM User WHERE password='"+password+"' AND login='"+login+"'");
		...
Si je ne mets pas le session.beginTransaction(); j'ai une exception org.hibernate.HibernateException: createQuery is not valid without active transaction Je pensais, peut-être à tort, que Spring permettait de s'affranchir de démarrer/fermer les Transactions

J'ai lu des tonnes d'aide sur l'utilisation des TransactionManager et au final, je suis complètement paumé. Visiblement il y a plusieurs façons de l'implémenter et c'est un peu dépendant de la version d'Hibernate qu'on utilise. Bref, je suis perdu.

J'espère que c'est à peu près clair parceque j'ai la tête sans dessus dessous à force de lire des trucs différents.