web-dev-qa-db-fra.com

Le fichier de configuration Hibernate (.cfg.xml) pour mapper plusieurs tables MySQL dans la même base de données?

J'expérimente avec Hibernate pour mon application Web Java. Ce qui suit fait partie de mon fichier hibernate.cfg.xml, et je me demande comment mapper plusieurs tables de base de données dans le même fichier de configuration. J'utilise des annotations pour mapper mes modèles sur la table de base de données mysql, et j'ai plusieurs classes de modèles (par exemple: models.Book). Comment mapper les modèles dans 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>
6
TonyGW

Nous ne devrions pas spécifier de mappages dans le fichier cfg.xml. Cela doit être fait par des annotations ou par XML. Pour les annotations: Le fichier cfg.xml que vous avez fourni a l'air correct, si nous utilisons les annotations pour indiquer les mappages de bases de données avec des classes d'entité.

Pour utiliser le mappage XML entre entités et tables, vous devez créer un fichier hbm.xml. Dans ce cas, Remplacer 

<mapping class ="models.Category" />

avec quelque chose comme

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

et le fichier hbm.xml contient le mappage nécessaire, comme suit: ..__, par exemple:

   <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>

Désolé, si je comprends mal votre question.

6
dvk317960

Nous ne pouvons pas configurer plusieurs bases de données dans un seul fichier de configuration. Si nous utilisons plusieurs bases de données, nous devons utiliser plusieurs fichiers de configuration. dans les tableaux respectifs, nous pouvons configurer le fichier de configuration correspondant.

1
pratap reddy