2009-10-22 146 views
2

其实我正在寻找类似这样的东西:休眠状态下的动态映射?

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

感谢您的帮助。

+0

什么意思是“增加一列”?你的意思是:添加一列? – 2009-10-22 12:01:09

+0

那么,你正在寻找一个代码或一些图书馆? – 2009-10-22 12:28:12

+0

通过“增加”我的意思是添加新的列 – sayan 2009-10-22 12:34:54

回答

2

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

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

或者您将字典映射为动态组件,它将映射到列。这可能是你正在寻找的。

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

0

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

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

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

0

可以根据数据库模式生成休眠配置和域类。也许这是你在找什么?当然,每次数据库模式更改时,您都必须编译您的应用程序。

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