Bonjour,
j'utilise le pattern Dao, pour implémenter la couche d'accès aux données, j'ai donc créé une interface générique comme ceci:
une implémentation de cette interface en utilisant le framework Hibernate:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public interface GenericDAO<T, PK extends Serializable> { /** Persist the newInstance object into database */ void create(T newInstance); ... }
mais je ne comprends pas la différence entre Class<T> et T ? parce que j'ai fait ceci,
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 public class GenericDAOImpl<T, Pk extends Serializable> implements GenericDAO<T, Pk >{ private Class<T> type; private Session session; public GenericDAOImpl(Class<T> classe) { this.type = classe; } @Override public void create(T newInstance) { try{ this.session = HibernateUtil.getSession(); this.session.beginTransaction(); this.session.save(newInstance); this.session.getTransaction().commit(); System.out.print("oui"); } catch (HibernateException e){ System.out.print(e.getMessage()); } } ...}
mais malheureusement, le read ne marche pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public T read(Pk id) { try { this.session = HibernateUtil.getSession(); this.session.beginTransaction(); this.type = (Class<T>)this.session.get(this.type, id); } catch (HibernateException e) { System.out.print(e.getMessage()); } return (T) this.type; }
je ne comprends ce 'null'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 GenericDAO<Projet,Integer> genericDAO = new GenericDAOImpl<Projet, Integer>(null); Projet projet2 = new Projet(); projet2 = genericDAO.read(2); System.out.print(projet2.getNom());
pourquoi c'est permis de faire:
et merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private Class<Projet> projet; private ProjetDAO projetDAO = new ProjetDAOImp(projet ); Projet p = new Projet(); p.setNom("projet1"); projetDAO.create(p);
Partager