JAVA hibernate DAO —— save 方法

在使用MyEclipse的Hibernate反向工程生成的DAO文件中,遇到数据无法通过save方法存入SQL Server数据库的问题。主要原因是hbm.xml文件主键设置不当。Hibernate的native策略可以根据数据库自动选择主键生成方式,但需确保正确配置。此外,DAO的save方法操作需要显式声明并提交事务,因为Hibernate默认为手动提交。在实际使用时,可能需要对MyEclipse自动生成的代码进行调整,例如将字段类型从timestamp改为Date以简化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用 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());


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值