SSH框架:
Struts2(web层)、Spring(service层)、Hibernate(dao层)整合。
ssh框架整合式两两整合,就是Struts2与Spring整合、Spring与Hibernate整合。
Struts2与Spring整合:
就是把struts2的action对象创建交给spring进行管理。因为action是多实例的,所以需要加scope。
所以在struts2的配置文件中配置该action的action标签中的class不需要action的全路径,若录入了action全路径,action对象会被创建俩次,在该class的属性值中录入spring配置的action的bean的id值。该书写方法的前提是必须引入struts2和spring的整合jar包:struts2-spring-plugin.jar
Spring与Hibernate整合:
就是把Hibernate中的核心配置文件中的数据库配置交给Spring配置文件中。
在Hibernate中一致存在第一次访问速度慢的问题,因为第一次访问时创建SessionFactory对象。而在Spring中,只需要把SessionFactory对象创建交给spring管理即可。
因为Spring配置文件在服务器启动时就会加载,所以就是在服务器启动时创建SessionFactory对象。来解决hibernate第一次访问很慢的问题。
针对Spring配置SessionFactory对象。Spring有一个封装的类LocalSessionFactoryBean,创建该类LocalSessionFactoryBean的对象即可。
true true update org.hibernate.dialect.MySQLDiealect
映射文件路径 映射文件路径 ......
DAO层中使用HibernateTemplate模板类:
public class TestDao{ private HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate){ this.hibernateTemplate=hibernateTemplate; } public void method(){ }}
在Spring配置文件中创建HibernateTemplate对象并注入SessionFactory对象
在service层调用了TestDao类,那么需要配置该类的对象;该对象需要注入HibernateTemplate对象。否则在该类中用hibernateTemplate对象做crud操作时会报空指针异常(NullPointerException)。
然后配置事务,先配置事务管理器HibernateTransactionManager,并注入SessionFactory(因为在配置SessionFactory时已经包含了dataSource,直接注入dataSource也可以)
在用到事务的service类中加上@Transactional
HibernateTemplate模板中常用API:
//Serializable save(Object entity); public void add(){ Test test=new Test(); test.setXXX(""); test.setXXX(""); ...... hibernateTemplate.save(test); }//void update(Object entity);//void delete(Object entity);//T get(Class entityClass,Serializable id); Test test = hibernateTemplate.get(Test.class,1);// T load(Class entityClass,Serializable id);//List find(String queryString,Object... values); List list = (List )hibernateTemplate.find("from Test"); List list = (List )hibernateTemplate.find("from Test where column=? and column=?","?的值","?的值"); for(Test test:list){遍历}
Spring分模块开发: