【问题标题】:Persist Object from a framework using hibernate使用休眠从框架中持久化对象
【发布时间】:2010-12-16 09:29:20
【问题描述】:

我正在考虑从我使用的库/工具包中保留某个对象。存在以下问题:

对象有一个 id 字段,它是一个字符串。如何在其中存储生成的数值?

库的对象层次结构相当复杂,对应的对象位于底部。它还包含应映射为 OneToMany 的数组。

如何为这个对象创建映射文件?遍历所有父类以确定必填字段? (源代码可用)。还是有一个选项可以保留所有这些?

【问题讨论】:

  • 可以改一下这个类的代码吗?
  • 我有源代码,因此这应该是可能的,从许可的角度 (LGPL) 也是如此。但是可能需要大量学习才能理解该框架。

标签: java hibernate frameworks


【解决方案1】:

我想说,首先,花一点时间分析您的域模型。

您是否需要对要保存的这些对象执行查询(除了读取和保存)?这些查询是否会受到这些对象所具有的依赖关系的影响?您真的有兴趣持久化与您的对象相关的所有对象图吗?

我的第一印象是决定持久化来自第三方库/框架的一个对象不是一个好主意,因为:

  • 您无法控制对象依赖关系/关系以及对象的生命周期。它是由第三者创建的,对吧?
  • 您必须遵守该特定结构,该结构很可能不是为持久性目的而优化/设计的。为不由您维护的结构创建 Hibernate 映射很乏味。
  • 您最终会保留比您需要的更多信息
  • 如果您曾经升级您正在使用的第 3 方库的版本,您的 Hibernate 映射可能不再匹配。
  • 有许多设计原则

我认为你会更乐意设计自己的结构并坚持下去。然后有一个适配器将您的结构转换为框架预期的对象。这样,您的代码将被框架对这些对象所做或将要做的所有事情隔离开来。您的持久性代码保持不变,只是适配器可能会改变。

我希望这是有道理的。如果您已经考虑了所有这些,并且仍然需要坚持该结构,请告诉我! :)

更新 我不是指创建一个实现与第 3 方对象相同的接口的结构,我指的是创建一个完全重新设计的结构,适合关系数据库中的持久性。然后适配器将根据您的对象创建第 3 方结构..

【讨论】:

  • 对象非常复杂,我希望避免基于框架中的稳定接口进行自己的实现(还需要一些关于该主题的非 IT 知识)。这并不重要,但现在这些对象只是存储为文本(此类对象的众所周知的文本格式)。创建它们也很慢,因为要进行大量“初始化”(=计算)才能创建它们。仅存储所有内容可能会使这更快,但不能保证。然后我们回到创建自己的实现,它可能会更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多