Pourquoi il ne suffit pas de définir l'annotation @entity? p>
Est-ce que je manque le point ici par ex. performance? p>
4 Réponses :
Vous ne faites pas si vous définissez hibernate.archive.AutoToTection code> propriété sur
true code>. Il y a un problème de performance ici car Hibernate recherchera les fichiers JAR pour l'annotation JPA. Notez que, cela initialise également ces classes. P>
L'annotation ne suffit pas parce que Hibernate ne sait pas où vivent vos classes annotées sans une sorte de déclaration explicite. Il pourrait, en théorie, scanner chaque classe de classe de classe et rechercher l'annotation, mais cela serait très très coûteux pour des projets plus importants.
Vous pouvez utiliser le ressort qui a une aide qui peut vous permettre de spécifier le package (S ) que vos objets Hibernate sont dans et il suffira de numériser ces paquets pour @enttity. Si vous avez tous vos objets dans un petit nombre de paquets fixes, cela fonctionne bien. P>
E.g. P>
AnnotationSessionFactoryBean sfb = new AnnotationSessionFactoryBean(); sfb.setDataSource( ds ); sfb.setHibernateProperties( hibProps); sfb.setPackagesToScan( ... ); sfb.initialise(); SessionFactory sf = sfb.getObject();
Vous pouvez également utiliser localsessionfactorybean code> ces jours-ci, qui prend en charge la fourniture d'un fichier
hibernate.cfg.xml code> au cas où vous en auriez besoin d'une. Je ne sais pas à quelle version de Spring Ceci a gagné la méthode code> Setpackagestoscan Code>, mais elle en en a certainement une maintenant.
Oui :) p>
Le fichier vous peut em> Mélanger les annotations et la mappage XML si vous le souhaitez, mais ce n'est en aucun cas nécessaire dans la plupart des situations. P> hibernate.cfg.xml code> n'est pas utilisé pour spécifier vos entités, il est utilisé pour configurer des éléments tels que les paramètres de connexion de Hibernate et les paramètres globaux. Le fichier
hibernate.cfg.xml code> contient également des instructions sur la localisation des entités. Vous pouvez répertorier les fichiers de mappage XML à l'aide de
@entity code>, il est inutile, hibernate sera inutile. les détecter. P>
«Si vous utilisez des annotations JPA comme @enttity, cela est inutile, Hibernate les détectera automatiquement» - il ne le fait pas assez clairement par défaut. Je reçois des exceptions de type d'entité non enregistrées Si je ne le dis pas sur les classes (j'utilise annotationconfiguration.addannotéclass code> pour le dire à leur sujet de manière programmatique). Je ne sais pas ce que je fais mal, mais ce n'est pas entièrement automatique.
Par défaut tous correctement annotés classes et tous les fichiers hbm.xml trouvés à l'intérieur des archives sont ajoutés à la Configuration de l'unité de persistance. Tu peut ajouter une entité externe à travers l'élément de classe cependant. p> blockQuote>