您的位置:首页 > 编程语言 > Java开发

JAVA hibernate DAO —— save 方法

2011-08-04 14:25 148 查看
用 MyEclipse 自带的Hibernate 反向工程生成的 DAO 文件,使用里面的 save 方法,数据不能插入数据库。

注意 hbm.xml 文件里面的主键的自增问题。

<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>


native

由 Hibernate 根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。

—————— 如果不清楚自己的主键自增机制,使用 native 一般是不会出错的 ——————————

***************************** hibernate 自动生成的 DAO —— save 方法 *********************

Transation对象的操作是必须自己手动添加进去,显示声明提交事务。

Hibernate 默认是手动提交的,必须开启事务,手动提交,否则数据库中没有保存记录;

public void save(Suser transientInstance) {
log.debug("saving Suser instance");
Transaction tx = getSession().beginTransaction();
try {
getSession().save(transientInstance);
log.debug("save successful");
tx.commit();
} catch (RuntimeException re) {
log.error("save failed", re);
tx.rollback();
throw re;
}
finally
{
getSession().flush();
getSession().close();
}
}


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!BTW : 用MyEclipse 自动生成的 DAO 文件也好,hbm.xml 文件也好,很多都得根据实际进行修改。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

如,SQL Server 数据库中,有一列的的数据类型是 datetime,用 hibernate 映射出来的 hbm.xml 文件中,该列对应的数据类型是 timestamp 。

而在使用的时候很不方便(timestamp 可以使用,得转型),将 bean 中的私有成员变量的数据类型改为 Date (相应修改getter 和setter 方法)。使用起来会顺手很多,如插入当前时间,只用在使用的时候new 一个 Date 就行,不用去转型。

ss.setBirthday(new Date());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐