转javaeye一个比较难的问题:业务要求动态的创建表、更新表结构,超出了hibernate的能力? (作者:bromon)

vc_pioneer 2005-10-20 10:29:25
公司的业务需要,我们要根据某些表的内容,动态的去创建新的table,或者修改已有table的结构。

以前好象听人说过,系统如果出现这种需求就是设计不合理,但是我一再考虑公司的设计方案,也只能这么做,而且方案是cto出的,已经和客户有较深程度的沟通,所以要做大面积的修改已经是几乎不可能的事了。

java eye的搜索功能有点小问题,我无法去寻找以前是否有类似的问题,所以只好发帖,请大家给点意见。如果硬上hibernate,那么就要动态创建hbm.xml,动态修改cfg.xml,这些都是小问题,关键是无法动态创建.class文件吧?

这个需求是否已经超越了hibernate的能力范围?我们只能依靠繁琐的jdbc?
...全文
458 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
theoffspring 2005-10-28
  • 打赏
  • 举报
回复
cm4ever真牛啊,"其实稍微看一下hibernate的源代码就知道该怎么做了。"
YuLimin 2005-10-27
  • 打赏
  • 举报
回复
努力工作,好好学习,开心生活:)
禽兽v5 2005-10-26
  • 打赏
  • 举报
回复
不是说他们不厉害,只是感觉他们很倚老卖老。
他们经常说“这个东西我在xx项目这样...使用”,很少看到“这个东西实现方式是...所以我们这样...会比较好”。只有应用没有研究,缺乏深度。

这点javaresearch比他们强。
sun1976 2005-10-26
  • 打赏
  • 举报
回复
路过,顺便学习
dssaaa 2005-10-25
  • 打赏
  • 举报
回复
如果吹牛能吹出名堂,也是牛
禽兽v5 2005-10-25
  • 打赏
  • 举报
回复
hibernate就是用的CGLIB,所以动态生成类的功能已写好。
禽兽v5 2005-10-25
  • 打赏
  • 举报
回复
javaeye的人每天就在那里吹牛,其实稍微看一下hibernate的源代码就知道该怎么做了。

net.sf.hibernate.cfg.Configuration

public Configuration configure(File configFile)
throws HibernateException

public Configuration addFile(File xmlFile)
throws MappingException

用文件的绝对路径,保证每次获得的是文件的最新内容就可以动态修改内存中的o/r映射。
他内部维护一堆Map和List,所以会把旧内容覆盖。
但是,不会删除已加载的关联(xxx-to-xxx)等,这个还没测试过有多少影响。
需要扩展出一堆removeXXX的方法来做对应的动作。
galaxystar2005 2005-10-23
  • 打赏
  • 举报
回复
reflection也可以帮你完成!推荐CGLIB工具
zjmoya 2005-10-21
  • 打赏
  • 举报
回复
顶……………………
Saro 2005-10-20
  • 打赏
  • 举报
回复
BCEL 是可以动态在内存中创建class的。

The Byte Code Engineering Library is intended to give users a convenient possibility to analyze, create, and manipulate (binary) Java class files (those ending with .class). Classes are represented by objects which contain all the symbolic information of the given class: methods, fields and byte code instructions, in particular.
flyxxxxx 2005-10-20
  • 打赏
  • 举报
回复
Configuration cfg = new Configuration()
.addResource("Item.hbm.xml")
.addResource("Bid.hbm.xml");
另外再看看hibernate文档的第5章 5.4. 动态模型(Dynamic models)
vc_pioneer 2005-10-20
  • 打赏
  • 举报
回复
最主要的是修改了配置文件如何让hibernate动态加载,而不需要重启数据库。
wangzhouyu 2005-10-20
  • 打赏
  • 举报
回复
动态创建class的第三方包很多压,比如:javasist,asm,等,使用sun的标准包也可以在程序里将一个java文件编译成class文件,

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧