你想做的第一件事就是用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。