`
z276356445t
  • 浏览: 152328 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Struts2+Spring2.5.6+Hibernate3+Freemarker整合(一)

阅读更多
本部分是整合S2SH+Freemarker,后台用Spring来管理各个bean,Hibernate来做数据库持久化,前端呈现用Freemarker。整合中对Struts2,Hibernate,Spring都是采用Annotation来进行注解类。
首先在ApplicationContext.xml中配置连接池,采用c3p0来配置。
<!-- 数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />
		<property name="user" value="root" />
		<property name="password" value="zhangting" />
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<!-- 最大连接数 -->
		<property name="maxPoolSize" value="20" />
		<!-- 最小连接数 -->
		<property name="minPoolSize" value="5" />
		<!-- 验证等待请求是否超时-->
		<property name="checkoutTimeout" value="120" />
	</bean>

然后对hibernate的一些个相关properties做好相应的配置。
<!-- hibernateProperties -->
	<bean id="hibernateProperties"
		class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="properties">
			<props>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
				<!-- 开启使用二级缓存 -->
				<prop key="hibernate.cache.use_second_level_cache">true</prop>
				<!-- 使用查询缓存 -->
				<prop key="hibernate.cache.use_query_cache">true</prop>
			</props>
		</property>
	</bean>

对于Hibernate的一些相关配置差不多就配置好了。然后将这些东西都注入到sessionFactory中。采用Hibernate的Annotation来持久化对象,所以要将这些bean注入到AnnotationSessionFactoryBean这个类中。
<!-- hibernate-annotation sessionFactory  注入配置 -->
	<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="hibernateProperties" ref="hibernateProperties" />
		<property name="packagesToScan">
			<list>
				<value>com.person.model</value>
			</list>
		</property>
	</bean>

packagesToScan是扫描相应包下的持久化类,现在已经完成了一部分Spring与Hibernate的整合了。接下来做的就是编写一个DAO层。
import java.util.List;

/**
 * 
 * @author 张廷 2011-3-24下午01:43:36
 * 
 */
public interface BaseDao {
	public void insert(Object stu);

	public void update(Object stu);

	public List findAll(String hql);

	public Object findById(Class clazz, Integer id);

	public void delete(Object stu);
}

写好接口后,接下来就要写一个对这个接口的实现类,在这之中我都是采用Spring的Annotation来对每个bean进行声明。在DAO层中使用Spring包中HibernateTemplate来操作数据库,毕竟人家都已经写好了,不用白不用。既然使用了Spring,我们当然还是选择Spring来帮我们管理类,接着配置HibernateTemplate。
<!-- hibernateTemplate实现 -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

接下来写DAO实现类
@Component
public class BaseDaoImplHibernate implements BaseDao {

	@Autowired
	private HibernateTemplate hibernateTemplate;

	public void delete(Object stu) {
		hibernateTemplate.delete(stu);
	}

	public List findAll(String hql) {
		hibernateTemplate.setCacheQueries(true);
		return hibernateTemplate.find(hql);
	}

	public Object findById(Class clazz, Integer id) {
		// Object obj = hibernateTemplate.load(clazz, id);
		return hibernateTemplate.get(clazz, id);
	}

	public void insert(Object stu) {
		hibernateTemplate.save(stu);

	}

	public void update(Object stu) {
		hibernateTemplate.update(stu);

	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

}

既然使用了Spring的Annotation来声明bean,别忘了配置component-scan。
<context:annotation-config />
	<context:component-scan base-package="com" />

接下来写Hibernate持久化类,使用Hibernate的Annotation来声明持久化类。
@Entity
@Table(name = "Student")
public class Student {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer stuId;

	private String stuNumber;

	private String stuName;

	private int age;

	private String birth;

	/*省略getter与setter*/

}

别忘了还要声明事务,让Spring来帮我们管理事务,事务的配置可以选择XML或者Annotation,由于XML来配置事务更加的方便,而且更加的简便,所以我们采用XML的方式来声明事务。
<!-- 事务 begin -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

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


	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" read-only="true" />
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="del*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>
	<!-- 事务 end -->

Hibernate+Spring的整合已经完成了,用junit写个测试类来测试一下
public class HibernateTemplateTest {
	private static ApplicationContext ctx;
	static{
		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
	
	@Test
	public void testDelStu() {
		BaseDao dao = (BaseDao) ctx.getBean("baseDaoImplHibernate");
		List<Student> list = dao.findAll("from Student");
		for(Student stu : list)
			System.out.println(stu.getStuName());
	}
}

下面是结果:

测试已经通过了,在下一篇中会介绍Spring+hibernate+struts2+freemarker的整合
  • 大小: 6.1 KB
4
2
分享到:
评论
2 楼 Myron2011 2011-12-16  
Myron2011 写道
能把源码发给一份儿吗?不会搭架子,正好参考一下你的

我的邮箱Myron19910211@yeah.net
1 楼 Myron2011 2011-12-16  
能把源码发给一份儿吗?不会搭架子,正好参考一下你的

相关推荐

    struts2+spring2.5.6+hibernate3.0+ext整合开发

    在"struts2+spring2.5.6+hibernate3.0+ext"的整合开发中,通常会使用Spring来管理Struts2的Action类,实现业务逻辑的解耦。同时,Spring可以作为Hibernate的事务管理器,处理数据库操作。Ext则用于创建前端用户界面...

    Struts2+Spring2.5.6+Hibernate3 用到的jar包

    Struts2+Spring2.5.6+Hibernate3 用到的jar包 antlr-2.7.6.jar asm.jar backport-util-concurrent.jar cglib-nodep-2.1_3.jar commons-collections-3.1.jar commons-dbcp.jar commons-fileupload-1.2.1.jar commons-...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的基本配置、集成方法以及常见问题的解决办法。 #### 一、...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在深入探讨Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解的实现细节之前,我们先回顾一下这三个框架的基本概念及其在JavaEE企业级开发中的作用。 ### Struts2框架 Struts2是一个开源的Web应用框架,它遵循MVC...

    struts2.1.8+spring2.5.6+hibernate3.3.2整合项目开发

    Struts2.1.8、Spring2.5.6与Hibernate3.3.2是Java Web开发中的三个重要框架,它们分别负责不同的职责,共同构建了一个功能强大的企业级应用架构。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求并...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,涉及的是JavaEE开发中常见的SSH框架(Struts2、Spring、Hibernate)的整合,尤其强调了注解在开发中的应用,旨在简化配置,提高开发效率。SSH框架的组合在...

    Struts2.0.14+Spring2.5.6+Struts.1.3.8+Hibernate3.2

    Struts2.0.14、Spring2.5.6、Struts1.3.8以及Hibernate3.2是四个非常关键的Java Web开发框架,它们在2000年代末到2010年代初广泛应用于企业级应用中。这个压缩包文件包含了这些框架的核心组件,对于学习和理解SSH...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)

    在这个全注解实例中,我们将深入理解如何利用Struts2.1.6、Spring2.5.6和Hibernate3.3.1构建应用程序,避免传统的XML配置文件,转而采用注解方式来提高开发效率。 **开发环境**: - JDK 1.6.0_18 - Eclipse 3.2.1 -...

    SSH框架配置Struts2.1.6+Spring2.5.6+Hibernate3.3.1 2

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是一种流行的企业级Java Web应用程序开发框架。这个框架的集成能够帮助开发者实现模型-视图-控制器(MVC)设计模式,提供数据持久化,以及应用层的管理和依赖注入...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例

    在Spring2.5.6中,`spring-context`、`spring-beans`、`spring-aop`等核心模块是基础,`struts2-spring-plugin`则是Struts2与Spring整合的关键,确保Action类能在Spring容器中被管理。 **Hibernate**作为持久层框架...

    struts2.14+hibernate3.3.2+spring2.5.6整合

    在“Struts2.14+Hibernate3.3.2+Spring2.5.6整合”项目中,首先我们需要了解每个框架的核心功能和特点: 1. Struts2:作为MVC(模型-视图-控制器)架构的一部分,Struts2负责接收用户请求,处理业务逻辑,并将结果...

    struts2+Hibernate3.3+spring2.5.6+extjs3.2 图书管理系统

    《基于Struts2+Hibernate3.3+Spring2.5.6+ExtJS3.2的图书管理系统详解》 在当今信息化社会,图书管理系统的构建是图书馆自动化、网络化的重要一环。本系统采用了一套经典的Java技术栈,即Struts2作为MVC框架、...

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包.zip

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们各自解决应用程序的不同问题...总的来说,Struts2.1.6、Hibernate3.3.1和Spring2.5.6的整合是Java EE开发中一个经典的架构模式,至今仍被许多项目所采用。

    ssh2(struts2+spirng2.5.6+hibernate3.2)

    SSH2 是一个流行的Java开发框架组合,由Struts2、Spring2.5.6和Hibernate3.2三个组件构成。这个框架提供了强大的功能,用于构建高效、可维护的企业级Web应用。 **Struts2** 是一个基于MVC(Model-View-Controller)...

    Struts2[1].1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解图文教程.doc

    至少需要7个核心jar包,包括commons-logging、freemarker、ognl、struts2-core、xwork以及两个特定于Struts2的插件:struts2-convention-plugin(用于注解支持)和struts2-spring-plugin(用于与Spring整合)。...

    Struts2+Spring2+Hibernate3+Annotation所需JAR包

    ### Struts2+Spring2+Hibernate3+Annotation所需JAR包详解 在Java Web开发领域,Struts2、Spring2和Hibernate3是三个非常重要的框架,它们分别负责Web层、业务逻辑层和服务持久化层的功能实现。为了更好地整合这三...

    Struts2.1.6-Spring2.5.6-Hibernate3.3.2

    Struts2.1.6、Spring2.5.6和Hibernate3.3.2是三个在Java Web开发中广泛使用的开源框架,它们分别是MVC框架、IoC/DI容器和对象关系映射(ORM)框架的代表。这些框架的组合在当时是非常流行的,用于构建高效、可扩展和...

    struts2.1.6+spring2.5+hibernate3.3.1

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1 是一个经典的JavaEE企业级开发框架组合,通常被称为SSH框架。这个组合在过去的开发中被广泛使用,提供了MVC(Model-View-Controller)架构、依赖注入(DI)以及持久化管理的...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...

Global site tag (gtag.js) - Google Analytics