One to Many Hibernate XML Configuration

David Winterfeldt

2008


A simple example using a one-to-many relationship in Hibernate with an XML configuration to find, save, and update a record. A Person has a one-to-many relationship with Address.

1. Spring Configuration

The HsqldbInitializingDriverManagerDataSource is used to initialize the test HSQLDB database and the LocalSessionFactoryBean is using to configure Hibernate. The mappingLocations property is used to set a list of Hibernate XML mapping files. The Person DAO is configured using Hibernate's session factory.

shared-context.xml
                
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="dataSource"
          class="org.springbyexample.jdbc.datasource.HsqldbInitializingDriverManagerDataSource">
        <property name="sqlScriptProcessor">
            <bean class="org.springbyexample.jdbc.core.SqlScriptProcessor">
                <property name="sqlScripts">
                    <list>
                        <value>classpath:/schema.sql</value>
                    </list>
                </property>
            </bean>
        </property>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mappingLocations">
            <list>
               <value>classpath:org/springbyexample/orm/hibernate3/bean/Address.hbm.xml</value>
                <value>classpath:org/springbyexample/orm/hibernate3/bean/Person.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.format_sql=true
                hibernate.dialect=org.hibernate.dialect.HSQLDialect
            </value>
        </property>
    </bean>

</beans>
                
            

PersonDaoTest-context.xml
                
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <import resource="classpath:org/springbyexample/orm/hibernate3/shared-context.xml"/>
    
    <bean id="personDao" class="org.springbyexample.orm.hibernate3.dao.PersonDaoImpl">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

</beans>