hibernate中的动态映射?

时间:2009-10-22 11:44:49

标签: hibernate dynamic mapping

其实我正在寻找这样的东西:

您在db中更改表(例如添加列);它应该反映在前端没有硬编码映射文件...

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

hibernate是一个ORM。因此在前端和数据库之间有一个对象模型。该对象模型应如何表示动态变化?列通常映射到属性。如果在数据库中添加一个,则仍会遗漏类模型中的属性。

如果您使用字典解决对象模型中的问题,可以选择直接将字典映射为地图,但数据不在列中,而是在行中。

或者您将字典映射为动态组件,它将映射到列。这可能就是你要找的东西。

我想说的是:您应该先在对象模型中解决问题。然后你可以问这是如何映射的。如果您没有对象模型,则根本不需要休眠。

答案 1 :(得分:0)

当Hibernate启动时,它会将域对象中的所有列映射到表中的列,这些列由SessionFactory维护。你想要做的是“动态”映射,这是不受支持的,你必须为此创建自己的混合JPA / Hibernate安装。就像@Stephan建议的那样,我将从对象模型开始,因此对域对象进行更改(添加属性),然后将其传播到数据库。

这意味着您现在的所有查询都必须动态地考虑这些新属性 - 如果您只有from DomainObject个查询,那么这不是问题。

我的观点是,在我看来,承担你想要的东西会造成即时和非正交的问题,这些问题可能不值得。考虑一些其他策略。

答案 2 :(得分:0)

可以基于数据库模式生成hibernate配置和域类。也许这就是你要找的?当然,每次数据库架构更改时都必须编译应用程序。

也许您还可以考虑其他映射工具,例如iBatis,您可以在配置中定义查询等。