45 votes

Différence entre critères et critères détachés en hibernation ?

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 ?

4voto

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.

3voto

Pablo Thiele Points 323

Juste pour servir de rappel. Si vous utilisez Spring et choisissez d'utiliser HibernateTemplate, il ne fournit pas la méthode createCriteria().

Vous ne trouverez que DetachedCriteria.

Voir également:

HibernateTemplate javadoc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X