Hibernate em vários arquivo do Spring?

Pessoal,

alguém sabe se tem como carregar configurações do Hibernate(.hbm.xml) em diferentes arquivos de configuração do Spring?

Eu tenho um arquivo applicationContext.xml com todos os meus “.hbml.xml” listados nele. Eu gostaria de poder colocar setar um.hbm.xml no applicationContext.xml de cada módulo do meu sistema.

O que eu tenho é isto no hibernate-applicationContext.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="mappingResources">
            <list>

                <value>org/javanuke/users/AddressVo.hbm.xml</value>
                <value>org/javanuke/users/UserVo.hbm.xml</value>
                <value>org/javanuke/users/GroupVo.hbm.xml</value>
            </list>
        </property>
...
</bean>

E eu quero isto nos outros arquivos:

Users-applicationContext.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="mappingResources">
            <list>
                <value>org/javanuke/users/UserVo.hbm.xml</value>
            </list>
        </property>
...
</bean>

Address-applicationContext.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="mappingResources">
            <list>
                <value>org/javanuke/address/AddressVo.hbm.xml</value>
            </list>
        </property>
...
</bean>

Ola Franklin,
o que voce pode fazer eh criar mais de uma session factory, e ter mapeamentos diferentes para cada uma delas. é como estamos usando aki no nosso sistema.

no seu exemplo bastaria cada sessionfactory ter seu Id, no caso UserSessionFactory e AddressSessionFactory e cada uma poderia apontar para um DataSource diferente tb …

sacou?

faz mais ou menos assim que funciona :smiley:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="mappingLocations"> <value>classpath:*.hbm.xml</value> </property> ... </bean>

se não to enganado isto deve resolver …

pra falar a verdade, fui conferir nos docs, e o correto é:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="mappingLocations"> <value>classpath*:*.hbm.xml</value> </property> ... </bean>

Valeu, vou testar as duas formas assim que eu voltar de férias. Estou em Garopaba agora :cool: Nem sei o que estou fazendo na frente de um computador no meio das férias :lol:

Valeu pessoal mas, infelizmenet não funcionou. A idéia de ter vários sessionFactories funciona em parte mas não funciona quando um .Hbm referência outro .hbm.
E o classpath*:*.hbm.xml dispara uma Exception dizendo que não pode abrir o arquivo…

Faltava só um asterisco na dica do Uruba. O seguitne código funcionou:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="mappingLocations"> <value>classpath*:**/*.hbm.xml</value> </property> ... </bean>

Valeu pela ajuda.