Bonjour,
Je tente (vainement) de configurer un dao avec Spring et Hibernate. Mais lorsque je demande le HibernateTemplate je reçoit un null :
Voci mon dao :
Mon manager, service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class SpringHibernateStudentDao extends HibernateDaoSupport implements StudentDao { public Student getStudent(int id) throws DataAccessException { HibernateTemplate hibtemp = getHibernateTemplate(); System.out.println("HibernateTemplate : " + hibtemp); Student student = (Student) hibtemp.get(Student.class, id); System.out.println("Student : " + student); return student; } }
Mon applicationContext.xml
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 public class StudentManager { private DAOFactory daoFactory; public StudentManager(DAOFactory daoFactory) { this.daoFactory = daoFactory; } public Student getStudent(int id) { Student student = daoFactory.getStudentDao().getStudent(id); System.out.println("Student : " + student); return student; } }
Et ma classe d'entrée :
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 ... <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>org.postgresql.Driver</value></property> <property name="url"><value>jdbc:postgresql://localhost:5432/MADB</value></property> <property name="username"><value>user</value></property> <property name="password"><value>admin</value></property> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"><ref local="dataSource"/></property> <property name="mappingResources"> <list> <value>Student.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> </bean> <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> <bean id="studentDAO" class="dao.impl.spring.hibernate.SpringHibernateStudentDao"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> <bean id="daoFactory" class="dao.impl.spring.hibernate.SpringHibernateDaoFactory" /> <bean id="studentManager" class="manager.StudentManager"> <constructor-arg><ref bean="daoFactory" /></constructor-arg> </bean> ...
et le résultat à la console (les logs d'hibrenate ne me sortent aucunes erreurs, que des TRACE, DEBUG et INFO) :
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 public class StudentManagerTest { /** Creates a new instance of StudenteManagerTest */ public StudentManagerTest() { } public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); StudentManager mngr = (StudentManager) ctx.getBean("studentManager"); System.out.println("Student Manager :" + mngr); mngr.getStudent(3); } }
Je soupçone le fait de ne jamais injecter mon "HibernateTemplate" mais dans tous les fichiers de config que je trouve, je en vois jamais cette injection et je ne sais pas comment la créer.Student Manager :manager.StudentManager@5e222e
HibernateTemplate : null
Exception in thread "main" java.lang.NullPointerException
Merci de m'éclairer
Partager