在项目开发过程中,为了更好的满足客户需求,需要使用hibernate实现以下功能:
(1)动态的生成hibernate的配置文件*.hbm.xml。(已经解决)
(2)将动态生成的的*.hbm.xml文件动态的加入到项目中。(问题)
(3) 在(2)功能实现的基础上,希望项目打包成WAR文件依旧可以实现(2)所描述的功能,不需要重启tomcat。

解决方案 »

  1.   

    myeclipse有自动生成hbm的功能啊,不用手写的。生成后可以指定到自己的项目中。
    偶真不知道你说的“动态的加入到项目中”是啥意思哟。。
      

  2.   

    自动生成POJO和hbm使用工具并非难事,我所要生成的hbm.xml是根据客户需要,通过前台提交数据,自定义的一个hbm.xml文件,这个问题已经解决,如(1)。所谓动态,不只是动态生成hbm.xml,而且要求在生成hbm.xml后,能够不重新运行项目,就可以直接使用动态生成的hbm.xml文件进行常规的CRUD,如(2)。最后能够进行正常发布,如(3)。运行环境是myeclipse 8.5,服务器 tomcat.
      

  3.   

    动态?
    hbm.xml是根据数据库中的表由myeclipse自动生成(可全部生成啊),既然你前台提交数据,肯定是已经有了这个hbm.xml和对应的实体类才能提交(不然,你的数据保存何处?) 这何故能动态?
      

  4.   

    Hibernate的Configuration你是怎么获取的,这个类能管理映射关系
    addDirectory(File dir) 这个方法可以在运行期动态的添加映射文件
    addClass(Class persistentClass)   这个方法可以单个的添加需要hibernate管理的类,映射文件默认在classpath下寻找
    addFile(File xmlFile) 添加一个XML映射文件到Configuration中受管理
    Configuration配置变化后需要重新buildsessionFactory使其生效。
      

  5.   

    前台提供的只是关键的数据值,需要使用DOM4J来动态创建*.hbm.xml.
      

  6.   

    hibernate的Configuration获取的是hibernate.cfg.xml,至于这个文件并不是关键,因为我可以动态的对它进行修改映射mapping这个标签。现在的关键问题是,我动态生成的hbm.xml文件如何加入到项目中。
      

  7.   

    如果你的项目是目录方式部署,倒是可以写一个ant脚本来直接把生成的配置文件往你项目classes目录里面搬移,tomcat支持热部署,所以它发现classes里面有新的xml的时候,会reload你的项目包
      

  8.   

    Configuration 这个类初始化是用hibernate.cfg.xml
    然而他也提供了addFile()方法在运行期动态加载映射文件的。