对ssh中struts、spring、hibernate分工的理解
2016-08-24 17:12
387 查看
对ssh框架来说,核心是spring。
1Struts只负责拦截浏览器端的请求(可以理解为获取request请求,即得到request对象。request对象中包含用户在页面输入的表单信息、当前登录用户等信息),并将请求映射到执行类,剩下的工作全部交给spring来执行(或者叫全部委托为spring来执行)。
2spring是ssh的核心。
2.1spring负责控制反转(即通过在Action类中定义成员变量的方式,就可以使用service类中的方法了,其实service类是接口类,正真执行的是serviceIMP类中的方法)。
2.1管理hibernate,实现hibernate初始化等操作。(初始化了hibernate,就可以操作数据库了)
3hibernate负责数据库操作。
可见spring才是ssh框架的核心。
========================ssh框架下,一个普通类怎么进行数据库操作?===================
ssh框架下,一个普通类怎么进行数据库操作?因为有hibernate,所以用户不用写最原始的sql语句,而是通过hibernate对数据库进行操作。所以步骤如下
1通过spring对hibernate进行初始化(即获取了spring配置文件中的数据库登录用户名、密码、服务器地址和端口号等,就可以访问数据库了)。
2通过hibernate访问数据库。
举例代码如下:
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.ContextLoader;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class test{
public void testFunction() {
//通过spring对hibernate进行初始化开始,有此也可见spring是负责管理hibernate的,spring是ssh的核心。而Struts只负责请求到执行类的映射,跟数据库操 //作没有任何关系
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
SessionFactory factory=wac.getBean(SessionFactory.class);
HibernateTemplate hh = new HibernateTemplate(factory);
//通过hibernate操作数据库
String id="XXXXXXXXXXXXXX";
User instance = (User)getHibernateTemplate().get("com.org.base.User", id);//其中User是用户表的model(可以理解为用户表),id是用户的Id。该句的意思是通过
//用户id获取该用户。
}
}
========================ssh框架下,而SSH框架中的XXXDAO类怎么进行数据库操作?===================
而SSH框架中的XXXDAO类,想访问数据库就更加简单了。
如下:
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;
import com.org.dao.UserDAO;
import com.org.model.User;
public class UserDAOIMP implements UserDAO{
private HibernateTemplate hibernateTemplate;
protected void initDao(){
//do nothing
}
public HibernateTemplate getHibernateTemplate(){
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
this.hibernateTemplate = hibernateTemplate;
}
public List findAll(){
log.debug("finding all User instances");
try{
String queryString = "from User";
return getHibernateTemplate().find(queryString);
}
catch(RuntimeException re){
log.error("find all failed", re);
throw re;
}
}
}
只需要引入成员变量,private HibernateTemplate hibernateTemplate;
而hibernateTemplate需要在spring配置文件中进行配置(实现控制反转),如下:
注意上图中,hibernateTemplate在“控制反转”的时候,sessionFactory作为传入参数。和普通类访问数据库中,如下语句等同:
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
SessionFactory factory=wac.getBean(SessionFactory.class);
HibernateTemplate hh = new HibernateTemplate(factory);
1Struts只负责拦截浏览器端的请求(可以理解为获取request请求,即得到request对象。request对象中包含用户在页面输入的表单信息、当前登录用户等信息),并将请求映射到执行类,剩下的工作全部交给spring来执行(或者叫全部委托为spring来执行)。
2spring是ssh的核心。
2.1spring负责控制反转(即通过在Action类中定义成员变量的方式,就可以使用service类中的方法了,其实service类是接口类,正真执行的是serviceIMP类中的方法)。
2.1管理hibernate,实现hibernate初始化等操作。(初始化了hibernate,就可以操作数据库了)
3hibernate负责数据库操作。
可见spring才是ssh框架的核心。
========================ssh框架下,一个普通类怎么进行数据库操作?===================
ssh框架下,一个普通类怎么进行数据库操作?因为有hibernate,所以用户不用写最原始的sql语句,而是通过hibernate对数据库进行操作。所以步骤如下
1通过spring对hibernate进行初始化(即获取了spring配置文件中的数据库登录用户名、密码、服务器地址和端口号等,就可以访问数据库了)。
2通过hibernate访问数据库。
举例代码如下:
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.ContextLoader;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class test{
public void testFunction() {
//通过spring对hibernate进行初始化开始,有此也可见spring是负责管理hibernate的,spring是ssh的核心。而Struts只负责请求到执行类的映射,跟数据库操 //作没有任何关系
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
SessionFactory factory=wac.getBean(SessionFactory.class);
HibernateTemplate hh = new HibernateTemplate(factory);
//通过hibernate操作数据库
String id="XXXXXXXXXXXXXX";
User instance = (User)getHibernateTemplate().get("com.org.base.User", id);//其中User是用户表的model(可以理解为用户表),id是用户的Id。该句的意思是通过
//用户id获取该用户。
}
}
========================ssh框架下,而SSH框架中的XXXDAO类怎么进行数据库操作?===================
而SSH框架中的XXXDAO类,想访问数据库就更加简单了。
如下:
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;
import com.org.dao.UserDAO;
import com.org.model.User;
public class UserDAOIMP implements UserDAO{
private HibernateTemplate hibernateTemplate;
protected void initDao(){
//do nothing
}
public HibernateTemplate getHibernateTemplate(){
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
this.hibernateTemplate = hibernateTemplate;
}
public List findAll(){
log.debug("finding all User instances");
try{
String queryString = "from User";
return getHibernateTemplate().find(queryString);
}
catch(RuntimeException re){
log.error("find all failed", re);
throw re;
}
}
}
只需要引入成员变量,private HibernateTemplate hibernateTemplate;
而hibernateTemplate需要在spring配置文件中进行配置(实现控制反转),如下:
注意上图中,hibernateTemplate在“控制反转”的时候,sessionFactory作为传入参数。和普通类访问数据库中,如下语句等同:
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
SessionFactory factory=wac.getBean(SessionFactory.class);
HibernateTemplate hh = new HibernateTemplate(factory);
相关文章推荐
- 我对轻量级(struts+spring+hibernate)j2ee的理解(二)
- 我对轻量级(struts+spring+hibernate)j2ee的理解(一)
- SSH(struts+spring+hibernate)迅速开发--第八章 浏览和选购商品(3)
- SSH(struts+spring+hibernate)迅速开发--第八章 浏览和选购商品(4)
- SSH(struts+spring+hibernate)迅速开发--第八章 浏览和选购商品(5)
- SSH : struts、spring、hibernate等框架的整合
- SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(4)
- SSH(struts+spring+hibernate)迅速开发--第七章 用户注册的表单校验(2)
- SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(7)
- SSH(struts+spring+hibernate)迅速开发--第九章 下订单(1)
- SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(2)
- SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(1)
- SSH(struts+spring+hibernate)迅速开发--第四章 改造DAO(1)
- SSH(struts+spring+hibernate)迅速开发--第六章 用户登陆和注册(5)
- struts,spring,hibernate浅谈--我之理解
- SSH(struts+spring+hibernate)迅速开发--第二章 SSH框架搭建(1)
- SSH(struts+spring+hibernate)迅速开发--第三章 生成POJO对象和表映射(1)
- SSH(struts+spring+hibernate)迅速开发--第五章 定义配置和资源文件
- SSH(struts+spring+hibernate)迅速开发--第九章 下订单(2)
- SSH(struts+spring+hibernate)迅速开发--第八章 浏览和选购商品(2)