Bonjour à tous,
J'ai un problème de persistance avec HSQLDB en mode standalone. J'ai créé un programme qui écrit des données dans la base qui utilise Spring, Hibernate et HsqlDB. Mais lorsque l'application termine son exécution, il n'y a rien dans la base de donnée. malgré le fait que j'ai bien ";shutdown=true" à l'url de connexion à la base de données.
Après plusieurs recherches sur le net, j'ai essayé de remplacer la classe "org.apache.commons.dbcp.BasicDataSource" utilisée par la DataSource par "org.springframework.jdbc.datasource.DriverManagerDataSource". Et dans ce cas les données sont bien persistées. Par contre, il s'avère que ce ne soit pas une bonne solution car DriverManagerDataSource n'est pas un connection pool (cf : http://forum.springsource.org/archiv...p/t-39000.html)
Pour que ce soit plus clair, voici le fichier de configuration Spring :
Est-ce que vous avez une idée pour corriger ce problème?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>spring-hibernate.properties</value> </property> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="placeholderPrefix" value="${hibernate." /> </bean> <!-- DataSource Definition --> <bean id="exampleDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${hibernate.driverClassName}" /> <property name="url" value="${hibernate.url}" /> <property name="username" value="${hibernate.username}" /> <property name="password" value="${hibernate.password}" /> </bean> <!-- Database Property --> <bean id="exampleHibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show.sql">${hibernate.show.sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> </bean> <!-- Hibernate SessionFactory Definition --> <bean id="exampleSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="exampleDataSource" /> </property> <property name="hibernateProperties"> <ref bean="exampleHibernateProperties" /> </property> <property name="mappingResources"> <list> <value>org/sebbo/hsqldbTest/domain/user/User.hbm.xml</value> </list> </property> </bean> <!-- Spring Data Access Exception Translator Defintion --> <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"> <property name="dataSource"> <ref bean="exampleDataSource" /> </property> </bean> <!-- Hibernate Template Defintion --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="exampleSessionFactory" /> </property> <property name="jdbcExceptionTranslator"> <ref bean="jdbcExceptionTranslator" /> </property> </bean> <!-- Hibernate Transaction Manager Definition --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="exampleSessionFactory" /> </property> </bean> <!-- ================ Start of DAO DEFINITIONS ================ --> <!-- USER DAO Definition: Hibernate implementation --> <bean id="userDao" class="org.sebbo.hsqldbTest.domain.dao.impl.UserDaoImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <!-- Transactional proxy for the TODO Service --> <bean id="toDoService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="transactionManager" /> </property> <property name="target"> <ref local="userDao" /> </property> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
Merci d'avance pour votre aide.
Sebbo
Partager