Spring 中整合Hibernate
1. Spring中加入一个DataSource和一个SessionFactory,搞定。
<!-- dbcpDataSource ========================================================================== -->
<bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="maxActive" value="1000"/>
<property name="maxIdle" value="5000"/>
<property name="minIdle" value="5"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="180"/>
<property name="maxWait" value="9000"/>
</bean>
<!-- sessionFactory ================================================================== -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dbcpDataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
2. 现在还没用上,在Logic中加一个SessionFactory的变量和get,set方法。在spring中配置。
package com.zhch.logic;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.learn.hibernate.dto.Student;
public class AOPLogicImpl implements AOPLogic{
private SessionFactory sessionFactory;
public String getWord(){
return "I am aopLogicImpl.";
}
public void print(){
System.out.println("aopLogicImpl print");
}
public void saveStudent(){
try {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for (int i = 0; i < 20; i++) {
Student customer = new Student();
customer.setAge(20);
customer.setName("Li2");
customer.set_class("three");
session.save(customer);
}
tx.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
/**
* @return the sessionFactory
*/
public SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* @param sessionFactory the sessionFactory to set
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
<!-- hbAction -->
<bean id="hbAction" class="com.zhch.action.AOPAction">
<property name="logic" ref="hbService"/>
</bean>
<bean id="hbService" class="com.zhch.logic.AOPLogicImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
3. Student类和相应的映射文件Student.hbm.xml.(同5中的一样)
4. 在bean sessionFactory中配置对映射文件的引用。
<!-- sessionFactory ================================================================== -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 其它的内容
-->
<property name="mappingResources">
<list>
<value>com/zhch/db/dto/Student.hbm.xml</value>
</list>
</property>
</bean>
5. 在Action中添加个hbTest方法调用logic的saveStudent方法,在页面添加个提交到Action的hbTest方法的按钮,测试一下,成功。
附加1:
可以将数据库的相关信息放到一个database.properties文件中统一管理,在spring中引用这个文件。方便数据库切换。
database.properties内容:
database.connection.driver_class=com.mysql.jdbc.Driver
database.connection.url=jdbc:mysql://localhost:3306/test
database.connection.username=root
database.connection.password=123456
database.connection.dialect=org.hibernate.dialect.MySQLDialect
spring中加入:
<!-- propertyConfigurer ================================================================ -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/database.properties</value>
</list>
</property>
</bean>
引用方法:
<property name="driverClassName" value="${database.connection.driver_class}"/>
<property name="url" value="${database.connection.url}"/>
<property name="username" value="${database.connection.username}"/>
附加2: 一个典型的事务AOP的配置,以后用到
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="baseServiceproxyBean"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="InitModePopedomInfo">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
spring 的注解sessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--<property name="mappingLocations" value="classpath*:com/creawor/demo/model/*.hbm.xml"/>-->
<!-- packagesToScan可以自动搜索某个package的全部标记@Entity class -->
<property name="packagesToScan">
<list>
<value>com.**.model</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<!--常用数据库方言 MySQL5Dialect,SQLServerDialect,OracleDialect,SybaseDialect,DB2Dialect -->
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.query.substitutions">true 1, false 0</prop>
<prop key="hibernate.default_batch_fetch_size">4</prop>
</props>
</property>
</bean>
附加3:
当 Hibernate 遇上 Spring http://www.ibm.com/developerworks/cn/java/wa-spring2/
分享到:
相关推荐
SSH笔记-Spring简单整合Hibernate的测试。。。。。。。
SSH笔记-整合Spring2、Struts2、Hibernate4的完整步骤
SSH整合学习笔记之spring与hibernate整合(二)之c3p0 spring与hibernate整合基于XML方式--c3p0数据库连接池的使用。
SSH整合学习笔记之spring与hibernate简单整合的源码---对应我的博客文章 http://blog.csdn.net/wanghantong/article/details/6653482
SSH框架整合实战教程----读书笔记(七)附带的源码,便于学习
java(1) 整合入门(spring,struts,hibernate的整合)资料(1) 中大软件工厂项目前培训资料(1) 完整笔记+源码(1) ssh(1) C#查询参数化例子(1) 学习笔记+完整源码(1) 介绍与深入(1) 学习笔记(不含整合)(1) C#(1) .CHM格式...
使用MyEclipse整合SSH(Struts、Spring、Hibernate)三大框架案例用户注册源码下载
【SSH学习笔记】整合spring3-hibernate的小项目(一) 配套资源 需求分析: 1、使用spring注入dataSourse数据源 2、使用BaseDao获取注入SessionFactory并返回Session 3、实现查询所有和按字符串查询的方法 4、...
Struts2-Spring-Hibernate整合,和Struts2,Hibernate的学习笔记。密码是kmp3314.
struts2:struts2-convention-plugin... 整合hibernate: spring-orm-3.2.4.RELEASE.jar 整合web: spring-web-3.2.4.RELEASE.jar 整合Junit测试: spring-test-3.2.4.RELEASE.jar 连接池: c3p0-0.9.5.2.jar
SSH整合学习笔记之struts2+spring+hibernate+c3p0源码
给大家分享一个前几年闲着蛋疼写(应该叫整合吧)的一个WEB应用框架,整合了Spring,使用的是SpringMVC,而不是Struts,Java开源框架Shiro,持久层框架Hibernate。实现的主要功能有,用户的管理,角色管理,可配置的...
【SSH学习笔记】整合spring3-hibernate的小项目(二) 配套资源 需求分析: 1、使用spring注入dataSourse数据源 2、使用BaseDao获取注入SessionFactory并返回Session 3、用generic接口及其实现类,实现泛型化的...
一、Spring 整合 hibernate 二、Spring 整合 struts 三、spring 事 务 处 理
如题,spring,struts2,hibernate,三大框架学习笔记,基本涵盖所有主要知识点,还有整合的详细说明
该资源为SSH框架整合示例(Spring、Struts2、Hibernate),里面包含源代码、jar包等,是直接从MyEclipse中导出的可正常运行的完整项目。其中另含完整开发笔记一份,为此项目搭建的开发过程笔记,可供读者开发练习...
③ 整合hibernate # 使用entity/dao/service全部使用注解扫描, 大大减少再开发的代码量; # 事务的织入: 开发时不必再处理SessionFactory、Session等, 只要按配置文件指定的格式对方法进行命名, 即可自动开启/提交...