您的位置:首页 > 其它

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包没加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: