如何获取SessionFactoryImplementor的实例?

时间:2010-11-01 13:18:39

标签: hibernate

与标题一样:我如何获得SessionFactoryImplementor的实例?我在代码中入侵的是:

SessionFactoryImplementator  sfi
    = (SessionFactoryImplementator) session.getSessionFactory();

我不太喜欢它,我想知道是否还有其他更优雅的方法来获取实现者的实例。

3 个答案:

答案 0 :(得分:3)

我没有找到任何返回实现者的公共类,所以你的方法很好。 (例如look here,在使用>返回时)

答案 1 :(得分:1)

怎么样:

SessionFactoryImplementor sfi = (SessionFactoryImplementor) ctx.getBean("sessionFactory");

答案 2 :(得分:0)

阅读上述评论后,我建议原作者的代码示例...... SessionFactoryImplementator sfi = (SessionFactoryImplementator) session.getSessionFactory(); 然后后者重新编码同一个委托人: SessionFactoryImplementor sfi = (SessionFactoryImplementor) ctx.getBean("sessionFactory"); 实际上使用Spring的任何人都应该始终遵循后一种方法,因为无法知道Spring3 / 4的SessionFactoryBean如何选择重新实现" openSession"等(或开发人员应用程序),但重点是通过Spring ApplicationContext访问它确保您拥有"最高级别"包装版本的实际SessionFactory,它应该实现最大数量的Hibernate SessionFactory相关接口(无论是通过AoP包装还是编译时编织等)。

如果您知道" appCtx"中只有一个Hibernate SessionFactory,那么更好的方法是: appCtx.getBean(org.hibernate.SessionFactory.class);