{anchor:Hibernate Mappings and CSF version 2}
h3. Hibernate Mappings and CSF version 2
The manner in which hibernate mappings are configured has changed from the manner in which hibernate mappings were configured in *sais-common* and in the *CSF Version 1* series. In *sais-common* and in *CSF version 1*, the sessionFactory's *mappingResources* property was used to configure hibernate mappings. The use of the *mappingResources property has been deprecated* and will no longer be used except to support legacy applications.
With the release of the CSF version 2 series, the sessionFactory's *mappingLocations* property will be used to configure hibernate mappings. The *mappingLocations* property allow for more flexibility when configuring hibernate mappings from several different sources.
The principal advantage of using the *mappingLocations* property is that you can specify a resource path to the mapping files as opposed to the absolute path to the mapping file. This is all well and good but what does this actually mean. Rather than specifying the individual hibernate mappings as shown below:
{code}
<value>edu/mit/csf/example/academic/hibernate/AcademicTerm.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/AcademicTermDate.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/AcademicYear.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/Department.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/EnrollmentStatus.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/Course.hbm.xml</value>
<value>edu/mit/csf/example/academic/hibernate/Citizenship.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/Student.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/StudentOtherMitId.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/StudentMitId.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/ArchivedStudent.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/ArchivedStudentOtherMitId.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/ArchivedStudentMitId.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/Country.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/State.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/StudentAddress.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/StudentEmail.hbm.xml</value>
<value>edu/mit/csf/example/student/hibernate/StudentPhone.hbm.xml</value>
{code}
Using the *mappingLocations* property, you can now specify wildcards in the resource path to match multiple files so that you don't have to configure a hibernate mapping file location every time you add a new mapping file. This reduces the 16 lines in the above to the following 2 lines shown below:
{code}
<value>classpath*:edu/mit/csf/example/academic/hibernate/*.hbm.xml</value>
<value>classpath*:edu/mit/csf/example/student/hibernate/*.hbm.xml</value>
{code}
|