Hibernate学习笔记1

我对hibernate的理解:

Hibernate把关系数据库中的表与面向对象编程中的对象建立了映射关系,这样,我们在操作数据库关系型数据库的时候,就不用在写那些jdbc的语句了,因为hibernate已经封装了这些,我们只需要建立hibernate配置文件和映射文件就可以了,当然,建立与数据库中表对应的类是必须的,这也是建立映射关系的前提。hibernate是一种面向对象的编程思想,建立了数据库表与对象的映射后,我们就可以操作对象的方法来实现数据库表的管理了。

hibernate实战经验总结:

遇到的问题:hibernate中用update()方法更新对象属性时,抛出异常

报异常:

21:24:25,718 ERROR AbstractBatcher:61 - Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
问题原因:在从数据库中获得对象时,得到的对象不是一个persistent(持久态的)对象,而是一个detached(游离态的)对象。是detached对象为什么就会出现这个问题呢?因为我们更新的是与数据库表对应的对象,而不是像以前一样直接更新数据库表,然而,只有在更新persistent对象时,hibernate才会知道,hibernate才会去替我们完成数据库的更新。

 

在Hibernate要获得持久态对象有多种方法:
(1)用session的get(Class clazz, Serializable id)方法
(2)用session的load(Class clazz, Serializable id)方法;

等,还有其他方法。

注意:不要用普通的查询方法去查出你要更新的对象,要用hibernate给我们提供的方法来获得persistent对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值