2010-05-28 6 views
4

En utilisant Hibernate, quelle est la manière la plus efficace de déterminer si une table est vide ou non vide? En d'autres termes, la table a-t-elle 0 ou plus de 0 lignes?Comment tester si une table est vide, en utilisant Hibernate

Je pourrais exécuter la requête HQL select count(*) from tablename puis vérifier si le résultat est 0 ou non 0, mais ce n'est pas optimal car je demanderais à la base de données plus de détails que j'en ai vraiment besoin.

Répondre

3

SQL suivante est un moyen très efficace de voir si une table contient une ligne:

SELECT EXISTS (SELECT NULL FROM tablename) 

Je ne suis pas sûr de savoir comment convertir en HQL - peut-être ça marche?

2

Un grand nombre de bases de données sont efficaces pour renvoyer un nombre d'enregistrements dans une table, mais si vous voulez être créatif, qu'en est-il de session.createQuery("select 1 from table").setMaxSize(1).list().isEmpty()?

Ou: session.createQuery("select 1 from table").setFetchSize(1).scroll(ScrollMode.FORWARD_ONLY).next() == null

Je pense que cela dépendra de la base de données à laquelle méthode est la plus rapide.

Questions connexes