2009-03-18 4 views
3

Il existe un moyen de définir le nom JNDI d'une SessionFactory dans le fichier hibernate.cfg.xml. Cependant, si je n'utilise pas explicitement la recherche JNDI pour obtenir ma SessionFactory dans mon application Web, est-ce que je peux NE PAS lui donner un nom JNDI?Hibernate: Est-il acceptable de ne pas lier SessionFactory à un nom JNDI?

La raison pour laquelle je demande est que si je n'ai pas configuré mon nom JNDI, mes tests JUnit fonctionneront correctement. Mais si je ne le configurer en spécifiant uniquement « nom » dans la balise SessionFactory hibernate.cfg.xml, il va d'abord dire:

WARN [WebApp:SessionFactoryObjectFactory.addInstance] Could not bind factory to JNDI 

et lancer une exception:

javax.naming.NoInitialContextException:Need to specify class name in environment or system property, or as an appletparameter, or in an application resource file: 

Alors mon but est de supprimer le nom JNDI de mon hibernate.cfg.xml, mais je ne sais pas si cela va causer d'autres problèmes ou pas?

Répondre

3

Je dirais que ce serait correct la plupart du temps, mais vous pourriez également envisager d'utiliser un fichier hibernate.cfg.xm différent pour vos tests JUnit.

+0

+1 C'est ce que j'ai fait. –

+0

Comment allez-vous faire exactement cela? Comment spécifiez-vous en Java pour utiliser un fichier de mapping différent pour les tests unitaires? –

+1

Vous pouvez modifier le chemin de classe pour inclure un fichier de configuration ou l'autre, ou vous pouvez créer SessionFactory dans Java avec un fichier de configuration spécifique avec Configuration.configure ("hibernate-test.cfg.xml"). –

0

Si vous supprimez le nom de l'attribut, avec valeur = "sessionFactory" dans le fichier de configuration , cela sera correct.