SSH框架整合的一些步骤整理(一)
2016-08-22 23:26
357 查看
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。
下面开始SSH框架的整合,使用MyEclipse开发。
先实现spring和hibernate的整合:
一、新建一个web项目,添加spring功能
二、添加hibernate功能选择3.3版本,直接finish
三、添加完成后,可以看到applicationContext.xml文件。hibernateSessionFactory工厂类可以删除,由spring提供。为了jdbc连接,添加mysql-connector-java包
四、applicationContext.xml内容如下,稍后再修改它:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props></props>
</property>
</bean></beans>
五、创建一个pojo类,以Province类示例,使用注解注释类
对应MySQL数据库的news数据库和hat_province表(id,provinceID,province)
package demo.pojo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="hat_province",catalog="news")
public class Province {
private int id;
private String provinceId;
private String province;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="provinceID")
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
}
没有注解类需要添加hibernate的包如下(添加Entity Manager):
六、接下来修改applicationContext.xml内容如下:
(1)配置数据源
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- 设置的是最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 设置的是最大连接数 -->
<property name="maxActive" value="100" />
<!-- 最长连接响应时间 -->
<property name="maxWait" value="1000" />
<!-- 连接池初始创建的连接数 -->
<property name="minIdle" value="10" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost/news?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
(2)配置session工厂(用注解的方式)
<!-- 配置注解文件 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- 要配置数据源,name属性的值应为dataSource -->
<property name="dataSource" ref="dataSource" />
<!-- 要配置注解类,name属性的值应为annotatedClasses -->
<property name="annotatedClasses">
<list>
<value>demo.pojo.Province</value>
<!-- <value>demo.pojo.City</value> <value>demo.pojo.Area</value> -->
</list>
</property>
<!-- 要配置hibernate的其他属性,name的值应为hibernateProperties -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop><!-- 是否显示sql语句 -->
</props>
</property>
</bean>
(3)配置事务
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="bizMethods
b0f2
" expression="execution(* demo.dao..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />
</aop:config>
如果出错,需要更改头部:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
七、新建dao,与数据库进行交互:
接口ProvinceDao:
package demo.dao;
import java.util.List;
import demo.pojo.Province;
public interface ProvinceDao {
public abstract List<Province> find(Province p, int pageIndex, int pageSize);
public abstract void delete(Province p);
public abstract void add(Province p);
}
ProvinceDaoImpl(session不要导错包,session通过注入获得):
package demo.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Example;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class ProvinceDaoImpl implements ProvinceDao {
private SessionFactory factory;
public void setFactory(SessionFactory factory) {
this.factory = factory;
}
@Override
public List<Province> find(Province p,int pageIndex,int pageSize){
Session session = factory.getCurrentSession();
return session.createCriteria(Province.class).add(Example.create(p)).
setFirstResult((pageIndex-1)*pageSize).setMaxResults(pageSize).list();
}
@Override
public void delete(Province p){
Session session = factory.getCurrentSession();
session.delete(p);
}
@Override
public void add(Province p){
Session session = factory.getCurrentSession();
session.save(p);
}
}
在配置文件中添加:
<bean name="provinceDao" class="demo.dao.impl.ProvinceDaoImpl">
<property name="factory" ref="sessionFactory"></property>
</bean>
八、测试,新建一个test类:
package demo.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class TestS {
@Test
public void test() {
// 加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
// 根据配置文件注入bean
ProvinceDao bean = (ProvinceDao) ctx.getBean("provinceDao");
List<Province> list = bean.find(new Province(), 1, 10);// 查询第一页10条记录
for (Province province : list) {
System.out.println(province.getProvinceId() + ":"
+ province.getProvince());
}
}
}
运行结果:
如果出错,请查看是否添加hibernate的Entity Manager,或者jdbc包没加
下面开始SSH框架的整合,使用MyEclipse开发。
先实现spring和hibernate的整合:
一、新建一个web项目,添加spring功能
二、添加hibernate功能选择3.3版本,直接finish
三、添加完成后,可以看到applicationContext.xml文件。hibernateSessionFactory工厂类可以删除,由spring提供。为了jdbc连接,添加mysql-connector-java包
四、applicationContext.xml内容如下,稍后再修改它:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props></props>
</property>
</bean></beans>
五、创建一个pojo类,以Province类示例,使用注解注释类
对应MySQL数据库的news数据库和hat_province表(id,provinceID,province)
package demo.pojo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="hat_province",catalog="news")
public class Province {
private int id;
private String provinceId;
private String province;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="provinceID")
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
}
没有注解类需要添加hibernate的包如下(添加Entity Manager):
六、接下来修改applicationContext.xml内容如下:
(1)配置数据源
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- 设置的是最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 设置的是最大连接数 -->
<property name="maxActive" value="100" />
<!-- 最长连接响应时间 -->
<property name="maxWait" value="1000" />
<!-- 连接池初始创建的连接数 -->
<property name="minIdle" value="10" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost/news?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
(2)配置session工厂(用注解的方式)
<!-- 配置注解文件 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- 要配置数据源,name属性的值应为dataSource -->
<property name="dataSource" ref="dataSource" />
<!-- 要配置注解类,name属性的值应为annotatedClasses -->
<property name="annotatedClasses">
<list>
<value>demo.pojo.Province</value>
<!-- <value>demo.pojo.City</value> <value>demo.pojo.Area</value> -->
</list>
</property>
<!-- 要配置hibernate的其他属性,name的值应为hibernateProperties -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop><!-- 是否显示sql语句 -->
</props>
</property>
</bean>
(3)配置事务
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="bizMethods
b0f2
" expression="execution(* demo.dao..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />
</aop:config>
如果出错,需要更改头部:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
七、新建dao,与数据库进行交互:
接口ProvinceDao:
package demo.dao;
import java.util.List;
import demo.pojo.Province;
public interface ProvinceDao {
public abstract List<Province> find(Province p, int pageIndex, int pageSize);
public abstract void delete(Province p);
public abstract void add(Province p);
}
ProvinceDaoImpl(session不要导错包,session通过注入获得):
package demo.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Example;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class ProvinceDaoImpl implements ProvinceDao {
private SessionFactory factory;
public void setFactory(SessionFactory factory) {
this.factory = factory;
}
@Override
public List<Province> find(Province p,int pageIndex,int pageSize){
Session session = factory.getCurrentSession();
return session.createCriteria(Province.class).add(Example.create(p)).
setFirstResult((pageIndex-1)*pageSize).setMaxResults(pageSize).list();
}
@Override
public void delete(Province p){
Session session = factory.getCurrentSession();
session.delete(p);
}
@Override
public void add(Province p){
Session session = factory.getCurrentSession();
session.save(p);
}
}
在配置文件中添加:
<bean name="provinceDao" class="demo.dao.impl.ProvinceDaoImpl">
<property name="factory" ref="sessionFactory"></property>
</bean>
八、测试,新建一个test类:
package demo.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class TestS {
@Test
public void test() {
// 加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
// 根据配置文件注入bean
ProvinceDao bean = (ProvinceDao) ctx.getBean("provinceDao");
List<Province> list = bean.find(new Province(), 1, 10);// 查询第一页10条记录
for (Province province : list) {
System.out.println(province.getProvinceId() + ":"
+ province.getProvince());
}
}
}
运行结果:
如果出错,请查看是否添加hibernate的Entity Manager,或者jdbc包没加
相关文章推荐
- SSH框架整合的一些步骤整理(二)
- SSH框架整合步骤
- [Java] SSH框架笔记_S2SH整合步骤
- SSH框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤
- ssh整合步骤整理
- SSH框架整合详细步骤(持续更新)
- SSH框架整合完整步骤
- SSH框架整合步骤 推荐
- 整合ssh框架的具体步骤
- SSH框架整合步骤总结(亲身实践的啊)
- ssh框架整合步骤
- SSH框架详细整合步骤
- SSH框架整合步骤
- SSH框架整合步骤
- Mysql,Sql练习题(整理中,整合了网上了一些试题和面试书上内容)
- ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤
- android和SSH框架整合的cxf webservice的一些总结
- SSH框架整合步骤
- SSH框架整合步骤
- s2sh三大框架的整合步骤整理