Quelle est la différence entre les critères et les critères détachés ? Quand doit-on opter pour des critères et quand doit-on opter pour des critères détachés ?
Réponses
Trop de publicités?
Jithesh Nair
Points
43
-Le critère détaché est une très bonne alternative lorsque la session d'hibernation n'est pas présente.
-Les critères sont en ligne, ce qui signifie qu'il utilise l'objet de classe Session. Mais le critère détaché est hors ligne car il n'a pas besoin de session .
-Ensuite, les critères de détachement permettent la réutilisation du code.
public static void main(String [] args) throws Exception {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
System.out.println("By using criteria");
Criteria cr=session.createCriteria(Student.class);
cr.add(Restrictions.eq("gender", "male"));
cr.addOrder(Order.asc("stud_id"));
List<Student> res=((Criteria) cr).list();
for(int i=0;i<res.size();i++)
{
System.out.print( res.get(i).getStud_id()+"\t");
System.out.println(res.get(i).getName());
}
System.out.println("\n\nBy using Detached criteria");
DetachedCriteria dcr = DetachedCriteria.forClass(Student.class).add(Property.forName("gender").eq("male"));
dcr.addOrder(Order.desc("stud_id"));
List<Student> results = dcr.getExecutableCriteria(session).list();
for(int i=0;i<results.size();i++)
{
System.out.print( results.get(i).getStud_id()+"\t");
System.out.println(results.get(i).getName());
}
Cliquez ici pour les notes de mise en œuvre.
Pablo Thiele
Points
323