貌似大家用hibernate连接的大都是Oracle数据库。
今天偶用hibernate连MySql时发现一个问题:
数据无法提交到对应的表中,且不报错,使我有种每次重启tomcat就重建表的错觉。
从而把过错归咎于
<property name="hbm2ddl.auto">create</property>
经过测试发现,我的方向错了。
原本,我的dao是这样写的:(以add为例)
/**
* 向数据库中添加数据
*
* @param t
*/
public void add(T t) {
logger.info("向数据库添加" + t);
Session session = HibernateUtil.getSession();
session.save(t);
session.flush();
HibernateUtil.closeSession(session);
}
后来和老师朋友们交流才知道,原来MySql是不能自动提交的,所以我的数据只是插入到缓存里,没到数据库里。
现将此方法改为如下形式便好了:
/**
* 向数据库中添加数据
*
* @param t
*/
public void add(T t) {
logger.info("向数据库添加" + t);
Session session = HibernateUtil.getSession();
Transaction ts=session.beginTransaction();
session.save(t);
session.flush();
ts.commit();
HibernateUtil.closeSession(session);
}
posted on 2010-01-14 19:08
Ying-er 阅读(345)
评论(0) 编辑 收藏 所属分类:
SSH