SSH框架spring整合hibernate

来源:互联网 发布:乐知少儿英语 编辑:程序博客网 时间:2024/04/29 05:47
在 Spring 框架中,像 JDBC DataSource 或 Hibernate SessionFactory 这样的资源,在应用程
序上下文中可以用 bean 实现。需要访问资源的应用程序对象只需通过 bean 引用得到这
类预先定义好的实例的引用即可。步骤如下:

1. 配置数据源,有三种方式的数据源

方式一:Spring 内置实现 DriverManagerDataSource

<!—(1)配置数据源-方式一--><bean id="myDataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://127.0.0.1:3306/s2sh"></property><property name="username" value="root"></property><property name="password" value=""></property></bean>
方式二:DBCP 提供的BasicDataSource
<!—(1)配置数据源-方式二--><bean id="myDataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://127.0.0.1:3306/s2sh"></property><property name="username" value="root"></property><property name="password" value=""></property></bean>

方式三:JNDI 数据源(mysql5,tomcat6 为例)

1. 在Tomcat 根目录下的conf\server.xml 配置Resource:

<GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><Resource name="jdbc/mydatasource" auth="Container"description="DB Connection" type="javax.sql.DataSource"username="root" password=""driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/prefo" maxActive="5" /><!--name:资源的JNDI查找的名字type:资源driverClassName:JDBC驱动程序...--></GlobalNamingResources>

2. 在Tomcat 根目录下的conf\context.xml 配置:
<ResourceLink name="jdbc/mydatasource" global="jdbc/mydatasource"type="javax.sql.DataSourcer" />

3. 在Spring 的配置文件中配置:

<!—(1)配置数据源-方式三,使用JNDI--><bean id="myDataSource"class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>java:comp/env/jdbc/mydatasource</value><!--java:comp/env/Tomcat的前缀,后为JNDI的名称 --></property></bean>
(第1,2 步可以整合在conf\context.xml 中配置:

<Resource name="jdbc/mydatasource" type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver" username="root"password=""url="jdbc:mysql://localhost:3306/prefo" maxIdle="2"maxWait="5000"maxActive="4" />
)

2. 配置sessionfactory

<!-- (2)装配SessionFactory --><bean id="mySessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><!-- 传入dataSource --><property name="dataSource"><ref bean="myDataSource" /></property><!-- 添加映射文件 --><property name="mappingResources"><list><value>cn/com/jacken/prefo/books/vo/CatelogList.hbm.xml</value><value>cn/com/jacken/prefo/books/vo/BooksList.hbm.xml</value><value>cn/com/jacken/prefo/users/vo/UserList.hbm.xml</value></list></property><!--hibernate属性 --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property></bean>
(如果不需要事务,直接就可以配置Dao 且调用了(dao 要继承HibernateDaoSupport):

<!-- 装配catelogDao --><bean id="catelogDao"class="cn.com.jacken.prefo.books.dao.CatelogDaoHibernateImpl"><!-- 传入sessionFactory --><property name="sessionFactory"><ref bean="mySessionFactory" /></property></bean>

)

3. 配置事务(声明式)

1. 配置Dao (dao 要继承HibernateDaoSupport)

<!-- 装配catelogDao --><bean id="catelogDao"class="cn.com.jacken.prefo.books.dao.CatelogDaoHibernateImpl"><!-- 传入sessionFactory --><property name="sessionFactory"><ref bean="mySessionFactory" /></property></bean>
2. 装配事务管理器
<!-- (3)装配事务管理器 --><bean id="myTransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><!-- 传入session --><property name="sessionFactory"><ref bean="mySessionFactory" /></property></bean>
3. 配置抽象事务代理

<!-- (4)抽象事务代理 --><bean id="abstractTxProxy"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"><!-- 传入事务管理器 --><property name="transactionManager"><ref bean="myTransactionManager" /></property><property name="transactionAttributes"><props><!-- key 指定方法 --><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean>

4. 装配Service 层

<!-- 装配CatelogService --><bean id="catelogServiceTarget"class="cn.com.jacken.prefo.books.services.CatelogServiceSpringImpl"><!-- 传入dao --><property name="catelogDao"><ref bean="catelogDao" /></property><property name="booksDao"><ref bean="booksDao" /></property></bean>

5. 装配具体事务代理
<!-- 具体代理事务代理--CatelogService事务 --><bean id="catelogService" parent="abstractTxProxy"><!-- 传入CatelogService --><property name="target"><ref bean="catelogServiceTarget" /></property></bean>


原创粉丝点击