Bonjour, voilà j'utilise un DAO
classe CustomerDao
puis une classe CustomerService
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 public class CustomerDao implements DaoInterface<Customer, String>{ private Session currentSession; private Transaction currentTransaction; public CustomerDao() { } public Session openCurrentSession() { currentSession = getSessionFactory().openSession(); return currentSession; } public Session openCurrentSessionwithTransaction() { currentSession = getSessionFactory().openSession(); currentTransaction = currentSession.beginTransaction(); return currentSession; } public void closeCurrentSession() { currentSession.close(); } public void closeCurrentSessionwithTransaction() { currentTransaction.commit(); currentSession.close(); } private static SessionFactory getSessionFactory() { Configuration configuration = new Configuration().configure(); StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()); SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build()); return sessionFactory; }
et a chaque fois que je fais une operation d'ecriture, mise a jour ...
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 public class CustomerService { private static CustomerDao customerDao; public CustomerService() { customerDao = new CustomerDao(); } public void persist(Customer entity) { customerDao.openCurrentSessionwithTransaction(); customerDao.persist(entity); customerDao.closeCurrentSessionwithTransaction(); } public void update(Customer entity) { customerDao.openCurrentSessionwithTransaction(); customerDao.update(entity); customerDao.closeCurrentSessionwithTransaction(); }
je fais un appel a une methode ex: public void update(Customer entity)
qui elle meme appelle une autre : customerDao.openCurrentSessionwithTransaction();
cette derniere appelle private static SessionFactory getSessionFactory()
L'idée ( surement pas la meilleur) est qu'a chaque operation sur la base de données, je recree une sessionFactory qui charge donc mon fichier cfg.xml , le driver...
Ne devrais je pas faire cela une seule fois par exemple au demarrage de l'application? genre dans le constructeur d'une servlet ou autre...?
merci @ tous
Partager