第一步在Spring中配置数据源:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="org.gjt.mm.mysql.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh2?useUnicode=true&characterEncoding=UTF-8"/>
<property name="user" value="root"/>
<property name="password" value="hjc"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="1"/>
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="1"/>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="300"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="60"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60"/>
</bean>
第二步集成进hibernate :
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>org/ssh2/bean/Employee.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
</value>
</property>
</bean>
第三步使用Spring容器管理事务服务:
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--使用基于注解方式配置事务 -->
<tx:annotation-driven transaction-manager="txManager"/>
package org.ssh2.action;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.ssh2.service.EmployeeService;
import com.opensymphony.xwork2.ActionContext;
@Controller // employeeAction
public class EmployeeAction {
@Resource EmployeeService employeeService;
public String execute(){
ActionContext.getContext().put("employees", employeeService.list());
return "list";
}
}
package org.ssh2.action;
import javax.annotation.Resource;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.ssh2.bean.Employee;
import org.ssh2.service.EmployeeService;
import com.opensymphony.xwork2.ActionContext;
@Controller @Scope("prototype")
public class EmployeeManageAction {
@Resource EmployeeService employeeService;
private Employee employee;
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public String addUI(){
return "add";
}
public String add(){
employeeService.save(employee);
ActionContext.getContext().put("message", "保存成功");
return "message";
}
}
package org.ssh2.bean;
public class Employee {
private String username;
private String password;
private Gender gender = Gender.MAN;
public Employee(){}
public Employee(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
package org.ssh2.bean;
/**
* 性别
*
*/
public enum Gender {
MAN,
WOMEN;
}
<hibernate-mapping package="org.ssh2.bean">
<class name="Employee">
<id name="username" length="20"/>
<property name="password" length="20" not-null="true"/>
<property name="gender" not-null="true" length="5">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">org.ssh2.bean.Gender</param>
<!-- 12为java.sql.Types.VARCHAR常量值,即保存枚举的字面值到数据库。如果不指定type参数,保存枚举的索引值(从0开始)到数据库-->
<param name="type">12</param>
</type>
</property>
</class>
</hibernate-mapping>
package org.ssh2.service;
import java.util.List;
import org.ssh2.bean.Employee;
public interface EmployeeService {
public void save(Employee employee);
public void update(Employee employee);
public Employee find(String username);
public void delete(String... usernames);
public List<Employee> list();
}
package org.ssh2.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.ssh2.bean.Employee;
import org.ssh2.service.EmployeeService;
@Service @Transactional
public class EmployeeServiceBean implements EmployeeService{
@Resource SessionFactory factory;
public void delete(String... usernames) {
for(String username : usernames){
factory.getCurrentSession().delete(factory.getCurrentSession().load(Employee.class, username));
}
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public Employee find(String username) {
return (Employee)factory.getCurrentSession().get(Employee.class, username);
}
@SuppressWarnings("unchecked")
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public List<Employee> list() {
return factory.getCurrentSession().createQuery("from Employee").list();
}
public void save(Employee employee) {
factory.getCurrentSession().persist(employee);
}
public void update(Employee employee) {
factory.getCurrentSession().merge(employee);
}
}
<struts>
<!-- 默认的视图主题 -->
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.objectFactory" value="spring" />
<package name="employee" namespace="/employee" extends="struts-default">
<action name="list" class="employeeAction">
<result name="list">/WEB-INF/page/employee.jsp</result>
</action>
<action name="manage_*" class="employeeManageAction" method="{1}">
<result name="add">/WEB-INF/page/employeeAdd.jsp</result>
<result name="message">/WEB-INF/page/message.jsp</result>
</action>
</package>
</struts>
package org.ssh2.service;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.ssh2.bean.Employee;
import org.ssh2.bean.Gender;
import org.ssh2.service.EmployeeService;
public class EmployeeTest {
private static EmployeeService employeeService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
try {
ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
employeeService = (EmployeeService)act.getBean("employeeServiceBean");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void save(){
employeeService.save(new Employee("ssh2", "123456"));
}
@Test
public void update(){
Employee employee = employeeService.find("ssh2");
employee.setGender(Gender.WOMEN);
employeeService.update(employee);
}
@Test
public void delete(){
employeeService.delete("ssh2");
}
@Test
public void list(){
List<Employee> ems = employeeService.list();
for(Employee em: ems)
System.out.println(em.getPassword());
}
@Test
public void find(){
Employee em = employeeService.find("ssh2");
System.out.println(em.getPassword());
}
}
//ssh2.org ———— ssh2整合技术论坛,现在需要大量的管理员和版主,希望你们支持
分享到:
相关推荐
**jbpm4整合struts2+spring2.5+hibernate3.3** 是一个经典的Java企业级应用集成框架,用于构建业务流程管理系统。jbpm4是Business Process Management(业务流程管理)的一个开源框架,它允许开发者设计、执行、监控...
Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...
总结来说,Struts2+Spring2.5+Hibernate3.3整合是一个经典的Java Web开发模式,通过合理配置和集成这三个框架,可以构建出结构清晰、维护性强的企业级应用。在实际项目中,开发者需要对每个框架有深入理解,并熟练...
总之,Struts2+Spring2.5+Hibernate3.3的整合开发使得开发者可以充分利用各框架的优势,构建出高效、可扩展的Java Web应用程序。在实际项目中,这种集成方式被广泛应用,也是Java开发者必须掌握的一项技能。
Struts2、Spring和Hibernate是Java Web开发中的三...以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的重要技术,对于开发者来说,深入学习和实践将非常有益。
Struts2.1、Spring2.5和Hibernate3.3是Java Web开发中经典的三大框架,它们的整合应用是企业级应用开发中的常见实践。这三个框架的集成为开发者提供了强大的功能,包括模型-视图-控制器(MVC)架构、依赖注入(DI)...
包含有完整的jar包和源代码,这是专门为我们实验室定制开发的,包含了架构基于s2sh技术网站的参考实现(包括了全部基础部分:如分页,缓存,文件上传,连接池等等)希望对初学JavaEE WEB开的人有所帮助。...
本教程将探讨如何将Struts2.1、Spring2.5和Hibernate3.3这三大流行框架进行整合,以构建一个强大的Java Web应用程序。首先,我们先关注Spring2.5与Hibernate3.3的整合,这是整个集成的第一步。 Spring2.5是Spring...
Struts1、Spring2.5和Hibernate3.0是Java Web开发中经典的SSH(Spring、Struts、Hibernate)集成框架的三个组件,它们在2000年代末期至2010年代初广泛应用于企业级应用开发。SSH框架组合为开发者提供了模型-视图-...
Struts2.1+Spring2.5+Hibernate3.3是一个经典的Java Web开发技术栈,它们结合使用可以构建高效、可扩展的企业级应用程序。在这个简单的登录案例中,我们将深入理解这三个框架如何协同工作来实现用户身份验证。 ...
Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的集成可以构建出高效、灵活且可扩展的Web应用。这个压缩包包含了这三个框架整合时必不可少的JAR文件,下面将详细介绍每个框架的核心功能及其在整合...
Struts2.1.6、Spring2.5和Hibernate3.3是三个经典的Java开源框架,它们在2009年左右是企业级Java应用开发的主流选择。这个配置组合通常被称为SSH(Struts2、Spring、Hibernate)三位一体,用于构建高效、灵活且可...
综合来看,这个项目是一个关于如何利用JSR 168标准构建portlet的示例,使用了Struts2、Spring和Hibernate这三大框架进行开发,并且提供源代码供学习者研究。通过阅读和分析源码,可以深入理解portlet的开发流程,...
【标题】"jsr168portlet(struts2+spring2.5+hibernate3.3)" 是一个基于Java的Web开发项目,它利用了JSR 168规范来实现portlet的功能,并结合了Struts2、Spring2.5和Hibernate3.3这三个框架的强大功能。JSR 168是Java...
Struts1.3、Spring2.5 和 Hibernate3.3 是经典的 Java Web 开发框架组合,它们在企业级应用中广泛使用。这个组合被称为“SSH”(Struts-Spring-Hibernate),它允许开发者构建可扩展且松耦合的后端系统。在本项目中...
Struts2.1.6、Spring2.5和Hibernate3.3是经典的Java Web开发框架组合,被称为S2SH。这个框架整合提供了模型-视图-控制器(MVC)架构,使得开发者能够高效地构建企业级应用。下面将详细介绍这三个框架的配置步骤。 *...
Struts2、Spring2.5和Hibernate3.5是Java Web开发中的三大主流框架,它们的整合使用可以构建高效、可维护的企业级应用。这三大框架的整合主要目的是实现MVC(模型-视图-控制器)架构,提高代码的模块化和可重用性。 ...