Java WebアプリのHibernateを実験しています。以下は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>
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>
申し訳ありませんが、あなたの質問を誤って理解した場合。
単一の構成ファイルで複数のデータベースを構成することはできません。複数のデータベースを使用する場合は、複数の構成ファイルを使用する必要があります。それぞれのテーブルで、それぞれの構成ファイルで構成できます。