将对象保存到数据库时使用休眠

Posted

技术标签:

【中文标题】将对象保存到数据库时使用休眠【英文标题】:Use hibernate when saving objects to the database 【发布时间】:2014-12-14 19:08:55 【问题描述】:

在我的 java 应用程序中,我有一些带有继承的序列化实体类。保存这些类的实例时,我将它们转换为字节数组并保存到我的数据库表中的 longblob 列。使用hibernate来实现这个程序有什么好处吗?因为据我了解,hibernate 用于以适当的方式将实体与数据库表映射。但是在这里我没有关系模型来映射实体的属性。我将它们保存为对象。我是不是错过了什么。请澄清一下。提前致谢。

【问题讨论】:

不确定您是否遗漏了某些内容,但是根据您的设计,您将无法对数据表达查询,或者使用Java 以外的语言,甚至可以轻松更新实体的代码,并且仍然能够读取存储在数据库中的数据。 【参考方案1】:

如果您没有关系数据模型来保存这些对象并且您无法更改架构,那么您可以使用当前的方法。

如果您使用 PostgreSQL,您可能也会对 JSON storage 感兴趣。这样,您可以使用 JSON 对象存储您的层次结构,甚至可以对它们运行原生 SQL 查询(虽然不支持继承,但如果您使用一些 _class 列来区分对象类型,则可以解决这个问题)。

最简洁的方法是让关系模型与您的业务领域模型同步。这样您就可以受益:

乐观锁定 (preventing lost updates phenomena) 缓存(二级缓存和查询缓存) 可查询的层次结构 外部 DBA 层次结构可以仅使用 SQL 对您的层次结构运行更新 auditing

【讨论】:

以上是关于将对象保存到数据库时使用休眠的主要内容,如果未能解决你的问题,请参考以下文章

休眠,检查对象是不是存在和空值

如何在休眠中提交批量插入?

休眠和弹簧持久性问题。可能的身份值没有增加?

Linux休眠,挂起,待机,关机的区别及相关命令

使用 Spring 应用程序中的休眠将表情符号 unicode 字符保存在 mysql 数据库中

无法使用休眠将引用键存储在表中