一,整合带来的好处
整合spring和hibernate后较纯hibernate会给我们带来哪些方便呢?
我认为主要有下面几点:
1 利用IOC进行业务对象与持久化对象的生成及组合,如果整合了struts,则还可以一并组织管理Action。这样我们就无需手工创建及组织。
2 利用aop功能为数据库操作增加事务管理,这是我们的持久层代码大大简化,在将不会出现任何关于事务的代码。事务统一由spring进行管理。
3 无须对session进行管理,不用编写session的获得与关闭代码。
这样,我们的持久层代码就会大大的简化。去掉了大部分冗余繁琐的代码。
二,如何整合?
Spring提供了多种整合方法,我认为最有效的一种是继承HibernateDaoSupport来实现DAO。
继承了HibernateDaoSupport的类可以通过this.getHibernateTemplate()获得到一个HibernateTemplate对象。这个对象可以理解成对Session的封装(只是理解成而已),使用它你可以做一些使用session做的事情,如查询单个对象,删除,简单查询。但是比较复杂操作的就有可能无法完成(如复杂查询),对于这种情况我们可以调用HibernateTemplate的execute(HibernateCallBack callBack)来编写原始hibernate代码来进行查询。
数据库操作重要的一点是事务,spring事务的说明请见下面的文章。
使用spring管理事务后,我们将不用手工编写事务代码。
下面我们看一下具体的实现
说一下大体的结构
HelloWorld Action(Struts Action 对象,由spring管理,具体方法见下文:)
调用业务对象personbean的saveToPersistentStore方法去进行持久化操作。saveToPersistentStore中通过调用UserDAO去进行持久化操作
我们看一下这三个类的源码:
Action:
package com.hf.struts.sayHello;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.hf.bean.sayHello.PersonBean;
public final class HelloAction extends Action {
PersonBean pb = null;
/**
* Process the specified HTTP request, and create the corresponding HTTP
* response (or forward to another web component that will create it).
* Return an <code>ActionForward</code> instance describing where and how
* control should be forwarded, or <code>null</code> if the response has
* already been completed.
*/
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
String userName = (String)((HelloForm) form).getUserName();
pb.setUserName(userName);
int times=pb.saveToPersistentStore();
request.setAttribute( "personbean", pb);
request.setAttribute("times",String.valueOf(times));
//request.setAttribute("times",String.valueOf(1));
request.removeAttribute(mapping.getAttribute());
return (mapping.findForward("displayHello"));
}
public PersonBean getPb() {
return pb;
}
public void setPb(PersonBean pb) {
this.pb = pb;
}
}
Personbean:
package com.hf.bean.sayHello;
import com.hf.dao.sayHello.UserDAO;
import com.hf.hibernate.pojo.User;
public class PersonBean {
private UserDAO userDAO=null;
private String userName = "";
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
/**
* This is a stub method that would be used for the Model to save
* the information submitted to a persistent store. In this sample
* application it is not used.
* @return
*/
public int saveToPersistentStore() {
User user=userDAO.getUserByName(this.getUserName());
if(user==null){
return userDAO.saveUser(this.getUserName());
}else{
return userDAO.updateUser(user.getId());
}
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
UserDAO:
package com.hf.dao.sayHello;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.hf.hibernate.pojo.User;
import com.hf.util.sequence.IDGenerator;
publicclass UserDAO extends HibernateDaoSupport {
public User getUserByName(String name){
try{
if(name!=null){
List list =this.getHibernateTemplate().find("from User user where user.name=?",name);
if(list!=null&&list.size()==1){
User user=(User) list.get(0);
return user;
}
}
}catch(Exception e){
e.printStackTrace();
}
finally{
}
//���?�в�ѯ���
分享到:
相关推荐
"Struts 2、Hibernate和Spring整合应用" 在本章中,我们将学习如何将Struts 2、Hibernate和Spring三个框架整合应用于一个项目中。Struts 2是一个基于MVC模式的Web应用框架,Hibernate是一个ORM框架,Spring是一个...
在企业级Java应用中,如电商系统、CRM系统等,Hibernate和Spring的整合可以提供以下优势: - 提高开发效率:通过ORM和DI,开发者可以专注于业务逻辑,而不是底层的数据库操作。 - 简化事务管理:Spring的AOP事务管理...
SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高开发效率和代码质量。 Struts2作为MVC框架,主要负责处理HTTP请求,控制应用程序的流程,提供视图和控制器的分离。它的...
虽然具体的章节内容未知,但以上是基于Struts 2、Hibernate和Spring整合开发的常见知识点。在阅读或学习这些源码时,你可以逐步理解每个框架如何协同工作,以及如何通过整合提高开发效率和应用质量。
当Struts、Hibernate和Spring整合时,通常Spring作为核心框架负责整个应用的管理,包括初始化Struts和Hibernate。Spring可以注入Action类中的依赖,比如DAO(Data Access Object)或Service层对象,这样就可以实现...
将Hibernate与Spring整合可以充分利用两者的优点,提高开发效率并降低复杂性。 一、Hibernate概述 Hibernate是Java世界中领先的ORM框架之一,它允许开发者用Java对象来操作数据库记录,而无需编写SQL语句。通过配置...
Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...
Struts 2+Hibernate+Spring整合开发技术详解sample.pdf
Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码(内附数据库导出文件) 与书上最后一章内容完全对应 可以结合书上教程进行最后一章学习
SSH整合是Java开发中一种常见的框架集成方式,它由Struts、Hibernate和Spring三个开源框架组成,用于构建高效、可维护的企业级Web应用程序。在这个"ssh整合视频"中,我们将会学习如何将这三个强大的框架结合在一起,...
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书》是一本深入探讨J2EE Web应用程序开发的专业书籍。J2EE,全称Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的...
将Flex、Hibernate和Spring整合在一起,目的是为了构建一个三层架构的应用:表示层(Flex)、业务逻辑层(Spring)和数据访问层(Hibernate)。以下是整合过程中的关键知识点: 1. **通信协议**:Flex与Spring之间...
在IT行业中,数据库连接管理是应用系统开发中的关键环节,特别是在使用Java进行企业级开发时。...总之,整合Hibernate、Spring和DBCP连接池,可以构建出一个高效、灵活、易于维护的企业级数据库应用。
总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。
总的来说,"Struts+Hibernate+Spring整合项目之登录部分"涉及到Java Web开发中的多个核心技术点,包括MVC架构的理解、ORM工具的使用、依赖注入的实践以及安全机制的实施。通过这个项目的实现,开发者可以深入理解...
当我们将Hibernate和Spring整合时,Spring可以管理Hibernate的SessionFactory和Session,从而简化事务管理。Spring通过其声明式事务管理特性,可以自动处理事务的开始、提交或回滚,避免了手动编写事务管理代码。...
将Struts2、Hibernate和Spring整合,可以构建出一个完整的MVC架构应用。Spring作为基础框架,负责IoC和AOP,管理所有组件的生命周期。Hibernate作为数据访问层,处理数据库交互。Struts2作为展现层,接收用户的HTTP...
精通J2EE——Eclipse+Struts+Hibernate+Spring整合应用案例 pdf电子书, 包含所有18个章节的完整版, 美中不足的是扫描质量不是很高,且是第一版的,不是目前最新的第二版! 请看清楚了再下,免得后悔! 共有两个部分-这...
这本由蒲子明编著的《Struts 2+Hibernate+Spring整合开发技术详解》深入探讨了如何将这三个框架有效结合,以构建高效、模块化的Web应用。书中第12到17章的内容涵盖了以下几个关键知识点: 1. **Struts 2框架**: -...