【问题标题】:Hibernate Tutorial - Where to put Mapping File?Hibernate 教程 - 将映射文件放在哪里?
【发布时间】:2015-09-05 23:47:52
【问题描述】:

我在这里关注这个有趣的休眠教程:http://www.tutorialspoint.com/hibernate/hibernate_native_sql.htm

然而,本教程忽略了将这些文件放在哪里。我正在使用基本 Maven 项目的文件夹结构。

文件夹结构如下:

foo
└───src
    └───main
        ├───java
        │   └───org
        │       └───me
        │           └───bar 
        │               └───[all my java source-files here]
        └───resources
            ├───hibernate.cfg.xml
            └───hiber
                └───Employee.hbm.xml

文件夹main 具有同一级别的javaresources,如果这在ASCII 艺术中不明显的话。 (编辑:现在是。)

映射文件(Employee.hbm.xml)应该放在哪里?该文件在配置文件 (hibernate.cfg.xml) 中被引用。

感谢您阅读本文。

问候,

【问题讨论】:

    标签: java hibernate maven


    【解决方案1】:

    您应该将“hibernate.cfg.xml”放在“/src/main/resources”下 您应该将所有模型映射文件放在定义 POJO 模型类的同一目录下。

    根据你提供的目录结构,应该是这样的;

    foo
    └───src
        └───main
            ├───java
            │   └───org
            │       └───me
            │           └───bar 
            │               └───[all your java Model source-files here]
            |                    Employee.java
            |                    Employee.hbm.xml
            |                    Customer.java
            |                    Customer.hbm.xml
            └───resources
                └───hibernate.cfg.xml
    

    您应该在 hibernate.cfg.xml 文件中引用/映射所有模型文件,如下所示;

        <mapping resource="org/me/bar/Employee.hbm.xml"/>
        <mapping resource="org/me/bar/Customer.hbm.xml"/>
    

    你也可以看看这个,我的项目文件夹的截图;

    【讨论】:

    • 感谢您的详细回复。在这里发布后不久,我就能够解决自己的问题。我认为解决我的问题的方法是正确引用&lt;mapping resource="" /&gt; 属性并正确编码hbm.xml 文件的hibernate-mapping 部分,以便在编译和运行时找到POJO。 :D 如果编译器和 JRE 能够找到这些文件,我猜这些文件可能在任何地方。
    • 是的,可能,我很高兴你解决了你的问题。按照惯例,我总是将hibernate配置文件(“hibernate.cfg.xml”)放在src/main/resources下,其余的都放在POJO所在的模型包下。
    • 如何使用休眠包做到这一点?有没有可以设置休眠映射的特定字段?
    【解决方案2】:

    通常,它位于映射类所在的同一文件夹中。

    但是检查this site,显然它可以去任何地方,只需将您的类本地化到hbm.xml 文件中,如下所示:

    ...
    <hibernate-mapping>
        <class name="where.my.class.Is" table="myTable"
    ...
    

    【讨论】:

    • 太棒了。我认为这也是正确的。如果我可以选择一个以上的正确答案,我也会选择这个。 :D
    【解决方案3】:

    您可以将映射文件放在任何文件夹中,但您必须在 hibernate.cfg.xml 中为该文件提供正确的路径。

    【讨论】:

    • 是的,根据我的理解这是正确的。如果我可以选择一个以上的正确答案,我也会选择这个。
    【解决方案4】:

    您可以将 hibernate.cfg.xml 放在类路径中的任何位置,但在配置期间您应该提供文件路径,例如如果文件路径是

    src/main/java/conf/hibernate.cfg.xml

    您需要提供以下路径:

    conf/hibernate.cfg.xml

    如果您不想提供路径,则将 hibernate.cfg.xml 放在任何源文件夹中,如 src/main/java/hibernate.cfg.xml em> 或 src/main/resorces/hibernate.cfg.xml 例如

    同样,您可以将映射文件保留在类路径中的任何位置,但您需要在映射中提供路径。

    如果您只想提供文件名而不是路径,请将其保存在任何源文件夹类的包中,这是映射的。

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 2016-03-08
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多