Struts2 + Hibernate+ Spring框架整合

在开始之前,先给大家回顾一下基本概念
SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架。
 Struts

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。

官方地址:http://struts.apache.org
 Spring

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IOC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务–如果你需要–还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

官方地址:spring: http://www.springsource.org
 Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

官方地址:http://www.hibernate.org
 在SSH 的组合框架模式中,三者各自的作用

Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp。Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。

Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。

Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。

———————————————————————————————————————————
第一步:创建一个web项目,导入相关jar包

在这里插入图片描述
在这里插入图片描述
jar包截图

二、分包分模块,创建对应的实体类以及他的实现类,并给他相应的get/set方法以及构造方法 。在这里我创建的User类

在这里插入图片描述创建实体类以及对应的 类.hbm.xml
User.java
package com.baidu.pojo;

public class User {

private int id;
private String name;

private Dept dept;

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public Dept getDept() {
	return dept;
}

public void setDept(Dept dept) {
	this.dept = dept;
}

public User() {
	super();
	// TODO Auto-generated constructor stub
}

public User(int id, String name, Dept dept) {
	super();
	this.id = id;
	this.name = name;
	this.dept = dept;
}

}
User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping>
	<class name="com.baidu.pojo.User" table="tb_user">
	
		<id name="id" column="id" type="int">
			<generator class="native"></generator>
		</id> 
		<property name="name"></property>
		<many-to-one name="dept" lazy="false" class="com.baidu.pojo.Dept" column="did"></many-to-one>
	</class>
	
</hibernate-mapping>

然后在UserdaoI写一个list方法(方便后面测试)
UserDaoI.java
package com.baidu.dao;

import java.util.List;

import com.baidu.pojo.User;

public interface UserDaoI {

List<User> findList();

}
UserDaoImpl.java
package com.baidu.dao.impl;

import java.util.List;

import org.hibernate.classic.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.baidu.dao.UserDaoI;
import com.baidu.pojo.User;

@Repository
public class UserDaoImpl implements UserDaoI{

@Autowired
private HibernateTemplate hibernateTemplate;

public List<User> findList() {
	
	List list = hibernateTemplate.find("from User");//就相当于session中的query

// Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
// session.beginTransaction().begin();.getClass().getName()…

	return list;
}

}

UserService.java
package com.baidu.serivice;

import java.util.List;

import com.baidu.pojo.User;

public interface UserServiceI {

List<User> findList();

}

UserServiceImpl.java
package com.baidu.serivice.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baidu.dao.UserDaoI;
import com.baidu.pojo.User;
import com.baidu.serivice.UserServiceI;

@Service
public class UserServiceImpl implements UserServiceI{

@Autowired
private UserDaoI userDao;

public List<User> findList() {
	
	return userDao.findList();
}

}

UserController.java
package com.baidu.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.baidu.pojo.User;
import com.baidu.serivice.UserServiceI;
import com.opensymphony.xwork2.ActionSupport;

@Controller
@Scope(value=“prototype”)
public class UserController extends ActionSupport{

@Autowired
private UserServiceI userService;

public String list(){
	
	System.out.println("list...");
	List<User> list = userService.findList();
	return null;
}	

}
三、在根路径下(src目录)放入所需要的核心配置文件
在这里插入图片描述
四、配置核心文件
1、jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/day1025
jdbc.username=root
jdbc.password=123123
ps:将用户名 密码 以及数据库名称改成你自己的数据库相对应的即可
2、在企业中一般不需要放入 hibernate.cfg.xml,但是学习过程中还是要了解一下的
3、beans.xml
<?xml version="1.0" encoding="UTF-8"?>

<!-- 导入资源文件 -->
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.baidu"></context:component-scan>
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="jdbcUrl" value="${jdbc.url}"></property>
	<property name="driverClass" value="${jdbc.driver}"></property>
	<property name="user" value="${jdbc.username}"></property>
	<property name="password" value="${jdbc.password}"></property>
</bean>

<!-- 注入spring framework 提供的sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	
	<property name="hibernateProperties">
		<props>
			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
			<prop key="hibernate.hbm2ddl.auto">update</prop>
			<prop key="hibernate.show_sql">true</prop>
			<prop key="hibernate.format_sql">true</prop>
		</props>
	</property>
	
	<property name="mappingLocations">
		<list>
			<value>classpath:com/baidu/pojo/*.hbm.xml</value>
		</list>
	</property>
</bean>

<!-- 事物管理 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	 <property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--注解的事物配置
<tx:annotation-driven transaction-manager="transactionManager"/>-->

<tx:advice id="txAdvice" transaction-manager="transactionManager">
	<tx:attributes>
		<tx:method name="get*" read-only="true"/>
		<tx:method name="find*" read-only="true"/>
		<tx:method name="*" read-only="false"/>
	</tx:attributes>
</tx:advice>

<aop:config>
	<aop:pointcut expression="execution(* com.baidu.service..*(..))" id="pt"/>
	<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
</aop:config>

4、struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<package name="default" namespace="/" extends="struts-default">
    <action name="user_*" class="userAction" method="{1}">
       <result name="list">/list.jsp</result>
       <result name="update">/update.jsp</result>
    </action>
</package>

5、放入tomcat中测试一下

                                                欢迎大家转载,但是不要忘记附上连接哦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值