Spring Hibernate SessionFactory
Comment voulez-vous créer une SessionFactory en utilisant le java config?
@Bean
public SessionFactory sessionFactory(){
AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean();
sessionFactoryBean.setConfigLocation(new ClassPathResource("hibernate.cfg.xml"));
return sessionFactoryBean.getObject();
}
Cela ne marche pas pour une certaine raison...il renvoie toujours null.
OriginalL'auteur DD. | 2011-11-14
Vous devez vous connecter pour publier un commentaire.
Intéressant de noter ici que le Printemps 3.1 présente LocalSessionFactoryBuilder, ce qui est expressément conçu pour une utilisation à l'intérieur de @Bean méthodes.
http://static.springsource.org/spring/docs/3.1.0.RC1/javadoc-api/org/springframework/orm/hibernate4/LocalSessionFactoryBuilder.html
C'est l'ennui, le besoin de traiter avec FactoryBeans, getObject (), etc. FactoryBeans sont excellents pour une utilisation dans le XML, mais non idéal dans @Bean méthodes.
Noter que cette nouvelle builder est Hibernate 4.1+.
OriginalL'auteur Chris Beams
De retour à l'usine au lieu de cela:
Si vous avez besoin d'injecter
SessionFactory
directement quelque part dans le code, ajoutez cette méthode d'assistance:Noter que l'aide
sessionFactory()
est pas annoté avec@Bean
- ce qui est vraiment important.AbstractSessionFactoryBean est obsolète
OriginalL'auteur Tomasz Nurkiewicz
Tomasz est de droite, mais je ne crois pas que la création de l'instance de l'objet à l'aide de la "nouvelle" n'a pas de pieds avec le Printemps concept:
Je pense que vous devez le faire de cette façon:
et puis vous pouvez l'utiliser à l'intérieur de votre Printemps bean:
et puis à l'intérieur de votre méthode:
OriginalL'auteur danny.lesnik
Depuis les réponses ci-dessus sont dépassés, voici une approche plus moderne:
Aussi, si vous avez injecté une
EntityManager
, vous pouvez obtenir de la session en cours viaOriginalL'auteur Blauhirn
Vous devriez appeler afterPropertiesSet() sur la session de l'usine après le réglage de toutes les propriétés
Donc dans votre exemple, il devrait ressembler à:
OriginalL'auteur Josh