Hibernate配置文件(.cfg.xml)用于在同一个数据库中映射多个MySQL表?

时间:2014-06-06 19:51:38

标签: java mysql hibernate mapping

我正在尝试使用Hibernate作为我的Java Web应用程序。以下是我的hibernate.cfg.xml的一部分,我想知道如何在同一个配置文件中映射多个数据库表。我使用注释将我的模型映射到mysql数据库表,并且我有多个模型类(例如:models.Book),如何在hibernate.cfg.xml中映射模型?

<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test_db</property>
        <property name="connection.username">root</property>
        <property name="connection.password">xxx</property>

        <property name="connection.pool_size">1</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">validate</property>

        <mapping class ="models.Category" />

    </session-factory>
</hibernate-configuration>

2 个答案:

答案 0 :(得分:6)

我们不应该在cfg.xml文件中指定映射。它必须通过注释或XML来完成。 对于注释: 如果我们使用注释来指示与实体类的数据库映射,那么您提供的cfg.xml文件看起来没问题。

要在实体和表之间使用XML映射方式,需要创建一个hbm.xml文件,在这种情况下,替换

<mapping class ="models.Category" />

类似

<mapping resource="models/Book.hbm.xml></mapping> 

和hbm.xml文件包含必要的映射,如下所示。 例如:

   <hibernate-mapping>
    <class name="models.Book" table="Book" catalog="your database name">
        <id name="bookId" type="java.lang.Integer">
            <column name="BOOKID" />
            <generator class="identity" />
        </id>
        <property name="authorName" type="string">
            <column name="AUTHOR_NAME" length="10" not-null="true" unique="true" />
        </property>
    </class>//all the database mappings
</hibernate-mapping>

抱歉,如果我错误地理解你的问题。

答案 1 :(得分:1)

我们无法在单个配置文件中配置多个数据库。如果我们使用多个数据库,则必须使用多个配置文件。在各个表中,我们可以在各自的配置文件中进行配置。