2)Spring2和Hibernate集成
2.1)复制必要的jar
将
D:\JavaTools\spring-framework-2.5.5\lib\j2ee\jta.jar
D:\JavaTools\spring-framework-2.5.5\lib\c3p0\c3p0-0.9.1.2.jar
D:\JavaTools\hibernate-3.2\lib\antlr-2.7.6.jar
D:\JavaTools\hibernate-3.2\lib\asm.jar
D:\JavaTools\hibernate-3.2\lib\asm-attrs.jar
D:\JavaTools\hibernate-3.2\lib\cglib-2.1.3.jar
D:\JavaTools\hibernate-3.2\lib\commons-collections-2.1.1.jar
D:\JavaTools\hibernate-3.2\lib\dom4j-1.6.1.jar
D:\JavaTools\hibernate-3.2\lib\ehcache-1.2.3.jar
D:\JavaTools\hibernate-3.2\lib\jaxen-1.1-beta-7.jar
复制到/WEB-INF/lib下
2.2)修改配置文件
在/WEB-INF/applicationContext.xml中加入Hibernate相关配置。
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/bitrac" />
<property name="user" value="root" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/albertsong/bitrac/dao/Member.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="show_sql">true</prop>
</props>
</property>
</bean>
加入数据访问类的配置
<bean id="memberDao" class="com.albertsong.bitrac.dao.MemberDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
给<bean name="adminAction" class="com.albertsong.bitrac.action.AdminAction" />
添加属性<property name="memberDao" ref="memberDao" />
完成以后完整的applicationContext.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 "
- xmlns:aop = " http://www.springframework.org/schema/aop "
- xmlns:tx = " http://www.springframework.org/schema/tx "
- xsi:schemaLocation = "
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " >
- < bean id = " dataSource "
- class = " com.mchange.v2.c3p0.ComboPooledDataSource " destroy-method = " close " >
- < property name = " driverClass " value = " com.mysql.jdbc.Driver " />
- < property name = " jdbcUrl " value = " jdbc:mysql://localhost:3306/bitrac " />
- < property name = " user " value = " root " />
- < property name = " password " value = "" />
- </ bean >
- < bean id = " sessionFactory "
- class = " org.springframework.orm.hibernate3.LocalSessionFactoryBean " >
- < property name = " dataSource " ref = " dataSource " />
- < property name = " mappingResources " >
- < list >
- < value > com/albertsong/bitrac/dao/Member.hbm.xml </ value >
- </ list >
- </ property >
- < property name = " hibernateProperties " >
- < props >
- < prop key = " hibernate.dialect " >
- org.hibernate.dialect.MySQLDialect
- </ prop >
- < prop key = " show_sql " > true </ prop >
- </ props >
- </ property >
- </ bean >
- < bean id = " memberDao " class = " com.albertsong.bitrac.dao.MemberDaoImpl " >
- < property name = " sessionFactory " ref = " sessionFactory " />
- </ bean >
- < bean name = " adminAction " class = " com.albertsong.bitrac.action.AdminAction " scope = " prototype " >
- < property name = " memberDao " ref = " memberDao " />
- </ bean >
- </ beans >
(要注意的是如果没有scope="prototype",则登录出错以后,不能再正确登录,原因显然是AdminAction缓存了member的数据,具体原理暂不研究)
新建Bitrac\src\com\albertsong\bitrac\dao\Member.hbm.xml,这是Hibernate的数据映射文件,内容如下
- <? xml version = " 1.0 " encoding = " UTF-8 " ?>
- < ! DOCTYPE hibernate-mapping PUBLIC
- " -//Hibernate/Hibernate Mapping DTD 3.0//EN "
- " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd " >
- < hibernate-mapping package = " com.albertsong.bitrac.dao " >
- < class name = " Member " table = " BT_Member " >
- < id name = " id " column = " id " >
- < generator class = " native " />
- </ id >
- < property name = " grade " />
- < property name = " username " />
- < property name = " password " />
- < property name = " validate " />
- < property name = " conserve " />
- < property name = " contact " />
- < property name = " picture " />
- < property name = " explain " />
- < property name = " numPost " />
- < property name = " numComm " />
- < property name = " numFile " />
- < property name = " publish " />
- < property name = " address " />
- </ class >
- </ hibernate-mapping >
这 里使用了package,如果不使用package,则class的name要使用com.albertsong.bitrac.dao.Member这 样的。property的name和Member的属性对应,因为表BT_Member的列名和Member的属性一样,所以不需要使 用<column />标签。