【Jsp精品源码栏目提醒】:本文主要为网学会员提供“三大框架整合 - 其它资料”,希望对需要三大框架整合 - 其它资料网友有所帮助,学习一下!
全面整合 spring 管理 struts,spring 管理 hibernate黄金组合之全面整合,让 spring 管理 struts,spring 管理 hibernate一、新建 web 工程,ssh 1. 导入 struts,选择 struts1.2的 jar 包 建立包:org.accp.struts copy 到当前目录下 2. 导入 spring 选择 jar 包,注意不要导入 hibernate2的包,其它全要。
然后是 applicationContext.xml 放在 src 下,方便后期测试 后期可以放到 webRoot/web-inf 下 有重复的,选择覆盖 copy 到当前目录下 3. 导入 hibernate, 要选3.0,spring 不支持3.1 选中 copy...,再 next 选中生成在 spring 配置文件 再 next,选中已经存在的配置文件 再写 sessionFactory IDsessionFactory,next 填写数据源beanidds,再 next 去掉 create sessionFactory class 代表全部由 spring 托管 覆盖 4. 建立包:org.accp.hibernateorg.accp.hibernate.poorg.accp.hibernate.daoorg.accp.well.delegate 5. 导入日志配置文件 src/log4j.properties 6. 导入 mysql.jar,不能拷贝到 lib 下,也找不到,这时要在 buildPath 中导入外部 jar 7. 如果报错:这里不能有空格或回车符二、spring 整合 hibernate 1. 查看 applicationContext.xml 有了变化,多了 hibernate 的配置 2. 建立表的映射 选择数据库视图,accp 数据库 生成 users.hbm.xml 与 Users.java 去掉 catagory 属性,否则会报错 也在 applicationContext.xml 中增加了映射 3. 整合 hibernate 有两种方式 4. 第一种方式,继承 该 org.springframework.orm.hibernate3.HibernateTemplate, 类 是 spring 封装了操作Hibernate 的实现细节的类,用于代替 Session 的相关操作。
主要方法:Serializable saveObjectentity :保存记录void updateObjectentity :修改记录void deleteObjectentity :删除记录Object getClassentityClass SerializableidObject loadClassentityClass SerializableidList executeFindHibernateCallbackaction :查询返回集合Object executeHibernateCallbackaction:
查询返回对象总的说来该类的方法和 Session 接口中定义的方法是一致的. 1)在 dao 包中写接口 IDao, public interface IDao public void saveUsers upublic List getAllpublic boolean validateUsers u UserDao extends HibernateDaoSupport implements IDaopublic class UserDao extends HibernateDaoSupport implements IDao public void saveUsers u this.getHibernateTemplate.saveu 2)在 spring 中配置 UserDao,从哪取连接,property 二择其一 给继承了 HibernateDaoSupport 的对象我们注入一个 sessionFactory 对象也可以他会自动生成一个 hibernateTemplate 对象 3)测试 导入
mysql.jar,不能拷贝到 lib 下,也找不到,这时要在 buildPath 中导入外部 jar去掉 users.hbm.xml 中的 catagory 属性,否则会报错 ////////////////////////////////////ApplicationContext ac newClassPathXmlApplicationContextapplicationContext.xml IDao dele IDaoac.getBeanuserdao Users u new Users u.setUiduserdao u.setPwd123 u.setVersion2 dele.saveu 5. 第二种方式 1) 新建一个类 UserDao2,加一成员变量 HibernateTemplate 加一构造函数,注入 sessionFactory 加一 setter 方法,注入 sessionFactory public class UserDao2 implements IDaoprivate HibernateTemplate hibernateTemplatepublic UserDao2HibernateTemplate hibernateTemplate this.hibernateTemplate hibernateTemplatepublic void saveUsers u hibernateTemplate.saveu 2 改配置文件 applicationContext.xml 6. HibernateDaoSupport 与连接的管理而调用 getHibernateTemplate就会自动关闭连接。
这是日志main DEBUG org.springframework.orm.hibernate3.SessionFactoryUtils - ClosingHibernate Session自动关闭连接会造成延迟加载初始化异常, 此时可用 OpenSessionInView 模式解决。
Spring提供 Open Session In View 来解决这个
问题 有两种方式。
1 Interceptor,在 applicationContext.xml 配置 ......2 Filter,在
web.
xml 中配置 hibernateFilterorg.springframework.orm.hibernate3.support.OpenSessionInViewFiltersessionFactoryBeanNamesessionFactorysingleSessiontrue hibernateFilter .do加了这个配置,就要加监听器和初始文件的参数,否则报错contextConfigLocation/WEB-INF/applicationContext.xmlorg.springframework.web.context.ContextLoaderListener 7. HibernateDaoSupport 与自动提交 每执行一个
sql,默认都是由 spring 自动提交事务。
可以在数据源中插入进去 false 8. s