Несколько конфигов Hibernate - PullRequest
       1

Несколько конфигов Hibernate

8 голосов
/ 10 августа 2010

В настоящее время я работаю над созданием библиотеки для модульной части моего кода, и у меня возникла проблема с Hibernate.

В моем основном приложении у меня есть конфигурация гибернации для получения информации, которая должна быть запущена, но в моей библиотеке также требуется гибернация, поскольку некоторые объекты, которые я хочу, могли бы использоваться в других приложениях.

Когда я запускаю свой сервер tomcat с обоими настройками гибернации, я получаю сообщения об ошибках, которые не могут быть разрешены, и сообщение о том, что в моем запросе отсутствуют мои позиционные параметры. Тем не менее, когда я запускаю Tomcat только с конфигурацией приложения Hibernate, он запускается нормально.

Вот как выглядят конфиги ...

Из библиотеки:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>


<session-factory>   
    <mapping resource="blah.hbm.xml"/>
    <mapping resource="blargh.hbm.xml"/>
    <mapping resource="stuff.hbm.xml"/>
    <mapping resource="junk.hbm.xml"/>
    <mapping resource="this.hbm.xml"/>
</session-factory>

</hibernate-configuration>

А из приложения:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>


<session-factory>       

    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

    <!-- Enable the query cache  -->
    <property name="hibernate.cache.use_query_cache">true</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">false</property>

    <!-- mapping files -->

    <mapping resource="appStuff"/>
    <mapping resource="appBlah"/>
    <mapping resource="appBlargh"/>
    <mapping resource="appJunk"/>
    <mapping resource="appThis"/>    

</session-factory>

</hibernate-configuration>

Я все еще довольно новичок в Hibernate, и это довольно странная конфигурация.

Ответы [ 2 ]

12 голосов
/ 10 августа 2010

Вы можете загружать файлы конфигурации hibernate программно.

SessionFactory sf = new Configuration().configure("somename.cfg.xml").buildSessionFactory();

Это позволит вам создать два объекта SessionFactory. Однако я предполагаю, что вы хотите использовать один и тот же SessionFactory для вашего приложения и вашего модуля.

Вы можете загрузить оба XML-файла гибернации в один объект DOM (объединить дочерние теги «session-factory» вашего модуля с дочерними тегами вашего приложения) и затем использовать следующий код:

import org.hibernate.cfg.Configuration;
// ...
SessionFactory sf = new Configuration().configure(yourDOMObject).buildSessionFactory();

Редактировать: фабрика сеанса не печаталась, так как в ней было больше и меньше символов.

2 голосов
/ 10 августа 2010

если вы хотите сделать это, используйте hibernate осколок 1 .В противном случае вы можете просто передать путь (в файловой системе или в classpath) hibernate.cfg.xml, который вы хотите использовать

Из библиотеки

SessionFactory sf = new Configuration()
    .configure("Fromthelibrary.cfg.xml")
    .buildSessionFactory();

И из приложения:1008 *

SessionFactory sf = new Configuration()
        .configure("Fromtheapp.cfg.xml")
        .buildSessionFactory();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...