springhibernate错误总结1

1、hibernate版本在类中的包的导入。:org.springframework.beans.factory.BeanCreationException
问题 【本来配置在数据层、事务管理的是版本4,但是在service层引入package时在导入了自动默认为3的版本】出现bean加载异常。

2、事务管理器连接的数据池。:
【单独的spring里直接连接数据源就行,但是整合hibernate后,需要通过hibernate创建会话然后去链接数据源】


3、查询方法:由于经过spring整合后的hibernate无法直接获取session,只能通过sessionfactory工厂来开启session。
一种方法是通过回掉的返回值来获取session:
super.getHibernateTemplate().executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session){
Query query = session.createQuery();
List data = query.list();
}
});
或者: return this.getHibernateTemplate().execute(new HibernateCallback<List<Students>>() {
public List<Students> doInHibernate(Session session) throws HibernateException{
String sql = "select * from Students";
return session.createSQLQuery(sql).addEntity(Students.class).list();

}
});

另一种方法是回到hibernate,添加一个新的模板jdbc:
<!-- 配置jdbc 模板 -->
<bean id="jts" class="org.springframework.jdbc.core.JdbcTemplate" >
<!-- 将数据源配置给jdbc模板 -->
<property name="dataSource" ref="dataSource"/>
</bean>

4、关于通过注入的方法创建sessionfactory工厂,间接回到 hibernate的原始方法,创建一个session:
//通过注解的方法注入
@Autowired
private SessionFactory sessionFactory;

调用: String hql = "from Students where classid='"+id+"'";//
Session se = sessionFactory.getCurrentSession();//创建一个session;
Query sq = se.createQuery(hql);//翻译hql语句并且执行
List<Students> li = sq.list();//转换
se.close(); //关闭刚刚创建的session

posted @ 2018-01-31 14:26  朴志晟  阅读(115)  评论(0编辑  收藏  举报