将对象保存到数据库时使用休眠
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【讨论】:
以上是关于将对象保存到数据库时使用休眠的主要内容,如果未能解决你的问题,请参考以下文章