4.2.1 持久化一个对象

 

你想做的第一件事就是用Session把一个Transient对象持久化。为了做到这些,你需要使用save()方法:

首先,我们初始化一个user对象。当然,我们也可以在建立Session实例之后再初始化它,它们之间的顺序没有什么关系。通过SessionFactory来获得一个Session的实例,然后我们开始一个新事务。

通过调用save()方法把transient对象持久化。这个对象就和当前的Session产生了关联。然而,没有任何SQL语句被执行。Hibernate中的Session只在必要的时候才去执行SQL。

在某些时间点上,持久化对象需要和数据库保持同步。这发生在Hibernate的Transaction调用commit()方法的时候。在这个例子中,Hibernate取得一个JDBC连接,执行了一个INSERT语句。最后,session被关闭,JDBC连接被释放。

注意最好在建立对象和Session的关联之前把它初始化完成。当调用save()方法的时候,SQL INSERT取得了对象中的值。当然,你可以在调用save()方法之后再去修改属性的值,这样的修改被认为是一个SQL的UPDATE。

在session.beginTransaction()和tx.commit()之间做的事情都发生在一个数据库事务中。我们还没有详细的讨论事务;在下节中将会讨论它。但是要记住在事务中的操作要么全部成功要么全部失败;任何一个UPDATE或者INSERT失败的话,在数据库的层面所有的数据状态都将回滚到保存前的状态。然而,Hibernate并不会改变持久化对象的状态;这个时候你要做的就是赶紧抛弃这个失败的Session。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值