【问题标题】:Hibernate: Generate dynamic POJO classes & Mapping files at RUNTIMEHibernate:在运行时生成动态 POJO 类和映射文件
【发布时间】:2017-09-29 07:05:01
【问题描述】:

我正在寻找一种在运行时使用 XML 映射文件生成休眠类的方法。
例如,使用 hibernate 比我自己使用 JDBC 处理数据库可以节省更多的时间。

假设我用javassist 库生成了POJO .java 类,.class (ByteCode),它的.hbm.xml 映射文件具有正确的语法,休眠将自动识别它而无需任何额外的配置,或者这个过程必须是在启动时完成并需要重新启动应用程序?
如果是这样,在启动时会执行哪些额外步骤,我可以在运行时执行吗?

我进行了很多搜索并阅读了有关 Hibernate Dynamic Models 的信息,但是如果我需要在类生成阶段之前连接并处理数据库的某些表怎么办?

我还阅读了有关 Ant TaskSpring Roo 的信息,但仍然不知道该去哪里..

以前有人处理过这种事情吗?

请多多指教,提前致谢。

【问题讨论】:

  • 嗯,我认为这没有意义。您的程序必须在编译时知道这些类,否则您将无法在程序中使用它们。
  • 如果你想做 Graal(但你将独自理解和维护它),你可以重新定义一个 ClassLoader,当它检测到一个类丢失时,它将具有你想要的实体的名称提供,创建一个临时和自定义的 Java 源文件(通过解析和理解您的 XML 文件的意愿),使用自 JDK 6 以来可用的内部 JavaCompiler 类对其进行编译,然后提供它,就好像我在启动时由 jar 提供一样你的程序。但请注意:这是可行的(真的:它应该可以工作),但对于初学者或中等开发人员水平来说是无法达到的。

标签: java hibernate dynamic jboss


【解决方案1】:

我喜欢你正在尝试做的事情,所以当你说的时候我会贡献:

hibernate 会在没有任何额外配置的情况下自动识别它,还是这个过程必须在启动时完成并需要重新启动应用程序?

Hibernate 会识别它,但需要对 hibernate.cfg 文件进行额外修改,即您需要为每个实体添加映射属性,并且此 requires 应用程序将重新启动。

为了避免重新启动您的服务器,我只能想象在运行时将应用程序部署在第二台服务器上 - 在生成所需资源之后,如果第一次启动可以在后台进行,这会使事情变得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2018-04-30
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多