Spring3+hibernate4与3+Struts2整合

2019-02-15 11:05

Spring3.1与struts2.3整合

1、添加两个框架的支持 2、第一种整合方式:

a) 在spring配置文件里添加action的bean,注入service层对象 b) 在srtuts.xml里配置的action的class为对应的bean的ID

c) Spring的bean的作用域设置为scope=\

3、第二种整合方式

a) 在spring的配置文件里不创建action的bean b) Struts.xml里的class还是原来的action类的路径

c) 在action中创建的service层对象的属性名称与spring配置文件里的service层bean

的id一一对应,spring会自动注入。

spring3.1整合hibernate3.3

1、添加两个框架支持

a) Hibernate必须导入3.3版本的,不能使用4.0以上的版本 b) 如果先添加hibernate,在添加spring,那么会保留hibernate的配置文件,在spring

配置文件中会读取hibernate配置文件

class=\>

value=\>

c) 如果后添加hibernate,那么hibernate配置信息可以直接写到spring配置文件中,

可以不要hibernate配置文档

class=\>

value=\>

class=\>

org.hibernate.dialect.Oracle9Dialect

true

d) 上述两种情况只是myeclipse添加时自动选择的结果,也可手动变换。 e) 不管哪种情况,spring都需要创建一个sessionFactory的bean,这个bean用来创建

session操作数据库

2、实现类写法

a) 实现类不再使用之前hibernatesessionfactory工具类来操作 b) Spring对hibernate的操作也有封装 c) 将实现类继承HibernateDaoSupport

d) 并且实现需要注入sessionFactory对象,虽然在此类中并没有看到sessionFactory属

性,其实注入的是父类HibernateDaoSupport 里的sessionFactory属性

e) 该类有个getHibernateTemplate() 方法等同于hibernate的session f) 该方法返回结果为HibernateTemplate

g) 使用改类的find、save、get、delete、update等方法实现数据操作

publicclass TblDaoImpl extends HibernateDaoSupport implements TblDao{

public List getAll() {

returnsuper.getHibernateTemplate().find(\); }

public TblUser getUser(int id){

returnsuper.getHibernateTemplate().get(TblUser.class, id); }

publicvoid delTbl(int id){

super.getHibernateTemplate().delete(getUser(id)); }

publicvoid editTbl(TblUser tu){

super.getHibernateTemplate().update(tu); }

publicint addTbl(TblUser tu){ return

Integer.parseInt(super.getHibernateTemplate().save(tu).toString()); }

}

3、添加事务支持

a) 事务一般添加在service层

b) 由于触发事务回滚需要抛出异常,所以service不捕获异常,全部由action层来捕

c) Spring有专门的类来管理事务

d) Spring使用aop的方式把事务添加到指定的切面

4、整合过程中还需要删除一个包

a) 如果报classNotFoundException:org/ogject/asm/type

b) 删除hibernate的cglib.2.2.jar包,因为与spring的包冲突,删除完后要清空

服务器

5、使用注解实现配置

a) @Repository :用于标注DAO类 b) @Service :用于标注业务类

c) @Controller :用于标注控制器类

d) 使用@Autowired注解实现Bean的自动装配,默认按类型匹配,可以使用@Qualifier

指定Bean的名称 @Service

publicclass StuService { @Autowired StuDao sd;

publicvoid setSd(StuDao sd) { this.sd = sd;

} }

由于dao层没有sessionFactory,那么需要重写父类的setSessionFacotry方法来注入

@Repository

publicclass StuDaoImpl extends HibernateTemplate implements StuDao{ @Override @Autowired

publicvoidsetSessionFactory(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); }

e) spring配置文件里添加扫描注解配置

Base-package指定扫描哪些包 6、使用注解实现事务

a) 添加注解事务驱动

b)在servicec层需要添加事务的方法上添加@Transactional注解

@Transactional

publicvoid addStu(Student stu) { sd.addStu(stu); inta = 1/0;

delStu(stu.getStuid()); }

Spring 3.1 整合 hibernate4.1

1、hibernate连接信息需要整合到spring配置文件中,不要用单独的hibernate配置文件 2、使用myeclipse整合spring与hibernate4,spring配置文件默认生存事物管理类bean与事务注解扫描,推荐使用注解声明事物

class=\org.springframework.orm.hibernate4.HibernateTransactionManager\>

3、Spring与hibernate3整合时可以使用的hibernateTemplater类,在整合hibernate4中无法再使用,上网查了一下,主要原因是spring认为hibernate4的代码写的足够好了,不用自己再写一个支持类了。所以就建议使用hibernate4的hibernateDAO了。

4、整合时获取session不再使用openSession()的方法来打开session,而是使用getCurrentSession()方法来获取session

5、那么配置要保证能够从线程中获取session,需要配置openSessionInView过滤器,spring自带了此过滤器,直接配置即可

openSession

org.springframework.orm.hibernate4.support.OpenSessionInViewFilter

openSession /*

6、在实现类中如果要操作数据库,还是使用hibernate的的api操作 @Repository

publicclass CopyOfStuDaoImpl implements StuDao{

@Autowired

SessionFactory sessionFactory;

publicvoid setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; }

Session getSession(){

returnsessionFactory.getCurrentSession();

}

7、在实际编程中可自行创建工具类方便操作

该工具类还可添加常用的数据库操作方法。例如增删查改等。类似于自定义一个hiberntaTemplater类。使用这种方式需要在实现类继承此类,并注入


Spring3+hibernate4与3+Struts2整合.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:危重护理记录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: