我目前正在使用Hibernate开发应用程序,我们希望能够即时(即在运行时)插入列和表,并继续使用该应用程序而不必重新启动它。我们目前正在建立实体,但尚未使用它们。我们有旧的C代码(有一天要迁移到Java),该代码托管我们的业务逻辑,并通过JNI调用Java / Hibernate从数据库中获取记录。
在阅读了几个线程(请参阅下面的链接)和休眠3.6参考之后,我仍然有一些问题:
1。
如果我将SchemaUpdate嵌入到我的应用程序中,如此处所述:
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/toolsetguide.html#toolsetguide-s1-6
然后,即使我不使用实体,也是否必须重新创建SessionFactory(这是一项昂贵的操作)(当前情况;但是将来当然会改变)?然后,旧的会话将无效,即我是否必须将已经在内存中并由该会话维护的实体迁移到新会话?这有可能吗?
Hibernate是否在ORM之外维护有关架构实体的信息?如此处所建议的,(会话,即第一级)缓存无效是不够的:
changes to the schema while hibernate is running
2。
如何更改列?
我猜它仍然像@Bozho写道:“ A,休眠无法更改列。”?
Hibernate to update table schema
到目前为止,这是我的问题,谢谢您的帮助。
我已阅读更多参考资料:
使用Hibernate管理未映射的表
http://blog.codehangover.com/536/
Update database schema with hibernate
非常接近我的问题,提到了辅助数据库对象:
Enhance Hibernate Database Schema?
辅助数据库对象:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-database-object
http://www.liquibase.org/
http://www.alittlemadness.com/2006/08/28/incremental-schema-upgrades-using-hibernate/
最佳答案
是的,关于infoq about adding fields dynamically有一篇很好的文章。
关于hibernate - 在Hibernate中快速添加表和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6809616/