我正在尝试使用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>
答案 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)
我们无法在单个配置文件中配置多个数据库。如果我们使用多个数据库,则必须使用多个配置文件。在各个表中,我们可以在各自的配置文件中进行配置。