我不确定使用Spring3将Hibernate的会话实例注入DAO类的最佳方法是什么。我没有为此使用Spring的Hibernate Template支持,所以这是我在DAO类中拥有的代码。
public void setSessionFactory(SessionFactory sessionFactory){ this.sessionFactory=sessionFactory; } public SessionFactory getSessionFactory(){ log.info("Returning a refrence to the session instance"); if(sessionFactory==null){ log.error("Not able to find any associated session"); throw new RuntimeException("Not able to find any associated session"); } return sessionFactory; }
下面是将会话注入此方法的代码
<bean id="genericSessionFactory" class="HibernateSessionFactory" factory-method="getSessionfactory" scope="prototype/>
我不确定这是否是进行SessionFactory注入的最佳方法,因为我们不想在项目中使用Spring模板。因此,任何其他改进建议都将很有帮助。
在Spring参考建议这种用法:
public class ProductDaoImpl implements ProductDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public Collection loadProductsByCategory(String category) { return this.sessionFactory.getCurrentSession() .createQuery( "from test.Product product where product.category=?") .setParameter(0, category) .list(); } }
这样,您的类就不会对Spring有任何依赖,您只需使用普通的Hibernate。