美文网首页
session.save()

session.save()

作者: 游牧族人 | 来源:发表于2018-05-20 17:48 被阅读8次

先理解hibernate对象三种持久化状态。
首先,session.save()方法的功能将对象持久化到数据库中,对应到数据库中就是一条insert语句。session.save()方法的返回值为插入到数据库中的主键值。
当我们期望session.save()方法返回给我们期望的主键值时,我们必须手动合适的设置数据库的主键生成策略。否则可能会获取不到我们期望的主键值。
例如:



此时我们如果不设置kind_id便插入到数据库中,session.save()的返回值便为0。即使他在数据库中插入的id不为0。
然而当我们设置的主键生成策略与数据表中生成策略不符时,便会报异常。



这时我们不设置kind_id便把数据插入到数据库中时,他也会返回记录插入的id值。

持久化之前的输出:

持久化之后的输出:
总结:

使用hibernate时请设置好合适的主键生成策略,避免使用默认的程序设置主键生成策略,否则会出现数据持久化的各种异常。

自己遇到过的异常信息:

1、使用了默认的主键生成策略(即程序手动设置主键),同时并没有在持久化过程中手动设置主键,导致以下问题:
在同一个事务中无法save()之后继续修改持久化对象再次save()。
在同一个事务中无法save()两个不同的实例对象。
无法准确获得插入记录的主键值。

相关文章

  • session.save()

    先理解hibernate对象三种持久化状态。首先,session.save()方法的功能将对象持久化到数据库中,对...

  • hibernate

    hibernate默认不提交事务 hibernate有2级缓存 session.save() session.sa...

  • Hibernate中session方法

    1. sesson的CRUD常用方法 session.save(实体类) 保存 session.get(实体类的字...

  • Hibernate的对象持久化问题

    数据库中的持久化对象与缓存对象不一致问题。 开发时不知道为什么,session.save()之后的实例对象与数据库...

网友评论

      本文标题:session.save()

      本文链接:https://www.haomeiwen.com/subject/kqltjftx.html