`

SSH2+JPA的基本配置

 
阅读更多
天热,外面火辣辣的太阳实在是不扛不住.昨晚吃了泡面折腾了下.今天喉咙就犯病了.疼痛难受.一个人又闲的蛋疼.她昨晚说今天到欢乐谷去玩了.也没人来陪我.一天不写代码手痒.今天就又到公司了.
折腾了下当前最新版本的struts2+spring3+hibernate(jpa)应用的大型网站架构.用到的一些jar包就不折腾了不是很熟悉的可以直接call我了.这里主要是说其三个框架的整合配置文件:
1.web.xml
 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>itcastShop</display-name>
	<!--
		指定spring的配置文件,默認從web根目錄尋找配置文件,我們可以通過Spring提供的classpath:前綴指定從累路勁下尋找
	-->
		 
	<context-param>
		<!-- 应用路径Spring上下文 配置 -->
		<param-name>contextConfigLocation</param-name>
	<!-- <param-value>classpath:applicationContext.xml</param-value> -->
	    <param-value>
            /WEB-INF/classes/**/applicationContext*.xml
        </param-value>
	</context-param>
	<!-- Spring的监听 对Spring容器进行实例化 ,并把實例化存放在application的屬性中-->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!--过滤器  -->
	<filter>
		<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter>
		<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
		<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
		<init-param>
			<param-name>entityManagerFactoryBeanName</param-name>
			<param-value>entityManagerFactory</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--在做上传文件的时候,要在web.xml中增加ActionContextCleanUp这个filter,如果不增加,会发生第一次上传取不到文件的情况-->
	<filter>
		<filter-name>struts-cleanup</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
	</filter>
	
	<!-- struts2配置文件 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>

	<!-- 日志文件 -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

2.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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<!--<aop:aspectj-autoproxy/>-->
	<context:annotation-config />
	<context:component-scan base-package="cn.itcast" />

	<context:property-placeholder location="classpath:jdbc.properties" />
	<!--  
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
	</bean>
    -->
	<!-- 数据源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">

		<property name="driverClassName" value="${jdbc.driverClassName}" />

		<property name="url" value="${jdbc.url}" />

		<property name="username" value="${jdbc.username}" />

		<property name="password" value="${jdbc.password}" />

		<!-- 数据库连接池启动时的初始值 -->
		<property name="initialSize" value="${jdbc.initialSize}" />

		<!-- 连接池的最大值 -->
		<property name="maxActive" value="${jdbc.maxActive}" />

		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
		<property name="maxIdle" value="${jdbc.maxIdle}" />

		<!-- 最小空闲值,当空闲的连接数少于阀值时,连接池就会去申请一些连接,以免洪峰来时来不及申请 -->
		<property name="minIdle" value="${jdbc.minIdle}" />
		
		<property name="maxWait" value="${jdbc.maxWait}" />
		
		<property name="poolPreparedStatements" value="true" />
		
		<property name="defaultAutoCommit" value="true" />

	</bean>

	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<!-- 注入数据源bean到实体管理工厂bean -->
		<property name="dataSource" ref="dataSource" />

		<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
		
		<property name="persistenceUnitName" value="travel" />
		
		<property name="loadTimeWeaver">
			<bean
				class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
		</property>
	</bean>
	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<!-- 注入实体管理工厂bean到事务管理bean -->
		<!-- 这是事务定义,而且是使用注解方式定义事务(@Transactional),proxy-target-class="true"表示采用动态代理类来管理事务,
		           如果是false表示采用接口代理来管理事务(默认值为false)。
		 -->
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>
	<!-- 事务声明方式注解 -->
	<!-- Activates @Transactional for DefaultImageDatabase -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<!-- 上面这个就是使用配置式来定义事务,两种方式的区别主要是,注解式只用写那么一句话,然后在业务类或方法中加入@Transactional这个注解标记,就完成事务声明,
	           不过对于每个业务类都需要在类或方法中加入这些标记。而配置式声明,就是不用加这些标记,只要你的方法名称命名比较统一,就可以像上面这样定义事务规范,
	           然后在aop标签中定义切入点与执行通知就行了。我感觉如果业务逻辑不是太复杂的情况,配置式会比较简单,而且修改起来也方便,这两种方式我都写出来了,
	           至于用哪一种,由你们自己决定。
<aop:config >
    <aop:pointcut id="transactionPointcut" expression="execution(* cn.dykj.example.service..*Manager.*(..))"/>
    <aop:pointcut id="transactionDao" expression = "execution(* cn.dykj.example.dao..*Dao.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionDao"/>
</aop:config>
 
     <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="*" read-only="true" />
        </tx:attributes>
    </tx:advice>
    -->
	
	
</beans>

3.persistence.xml
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
	version="1.0">
	<persistence-unit name="travel" transaction-type="RESOURCE_LOCAL">
		<!--
			实体bean集合名字
		-->
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<!--
			JPA驱动提供者
		-->
		<class>cn.itcast.bean.user.Buyer</class>
        <class>cn.itcast.bean.user.ContactInfo</class>
        <!-- 
        <class>cn.itcast.bean.product.ProductInfo</class>
        <class>cn.itcast.bean.product.ProductStyle</class>
        <class>cn.itcast.bean.product.ProductType</class>
        <class>cn.itcast.bean.product.Brand</class>
         -->
		<properties>
		 	<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
			<property name="hibernate.max_fetch_depth" value="3" />
			<property name="hibernate.hbm2ddl.auto" value="create" />
			<property name="hibernate.jdbc.fetch_size" value="18" />
			<property name="hibernate.jdbc.batch_size" value="10" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
		</properties>
	</persistence-unit>
</persistence>

4.这里连接数据库是jdbc jdbc.properties
jdbc.driverClassName = org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
jdbc.initialSize=1
jdbc.maxActive=500
jdbc.maxIdle=2
jdbc.minIdle=1
jdbc.maxWait=1000

把项目架好配置一些基本的配置就ok了...




0
6
分享到:
评论
2 楼 爱大健 2012-05-22  
首先楼主赞赏下和谢谢! 
-----
随便体格小小要求。
你可以发一个myEclipse的 ssh2 + jpa 的holle world ssh2j配置项目完整案例源码就好啦,这样肯定有很多人下载,包括我。
自己研究和建立一个java-ssh2j Q群:2896836,研究最好啦!
1 楼 zhoujia 2011-08-01  
这个得顶 谢谢分享

相关推荐

    SSH-JPA.ZIP_SSH JPA DAO_java web ssh jpa_jpa_ssh_ssh jpa

    总之,"SSH-JPA.ZIP"提供的实例对于想要深入了解SSH框架与JPA集成的开发者来说,是一个非常有价值的参考资料,涵盖了从基本概念到实际应用的多个层面。通过深入研究这个实例,开发者可以提升自己的Java Web开发技能...

    Struts2+Spring+JPA框架的代码生成器

    代码生成器读取数据库中的表结构,根据预设的模板自动生成对应的实体类(对应数据库表)、DAO接口及其实现、Service接口及其实现、Struts2的动作类以及相关的配置文件(如Struts配置、Spring配置、JPA实体配置等)。...

    ssh+jbpm5.4 (2)

    JBoss是Red Hat公司的开源应用服务器,支持多种Java EE规范,包括EJB、JMS、JPA等,为SSH和jbpm5.4提供了一个运行环境。 学习和理解SSH+jBPM5.4的项目,你需要掌握以下关键点: 1. Spring框架的基本概念和核心特性...

    ssh集成jpa和使用注解案例

    在SSH框架中集成JPA,我们可以利用Spring的数据访问抽象层,通过配置来启用JPA支持。 注解在JPA中的使用极大地简化了数据库模型的定义。例如,我们可以使用@Entity注解标记一个类作为实体,@Table注解指定对应的...

    struts2+spring3.x+JPA1.0框架整合步骤

    ### Struts2 + Spring3.x + JPA1.0框架整合步骤详解 #### 一、引言 随着软件工程的发展,MVC(Model-View-Controller)架构模式因其清晰的分层逻辑而在Web开发领域中得到了广泛的应用。本文将详细介绍如何整合...

    ssh三大框架通用配置

    通过这样的配置,开发者可以快速搭建一个支持基本CRUD操作和分页查询的应用。实际开发中,还可以考虑引入MyBatis或JPA等其他ORM工具,以及Spring Boot和Spring Data等现代框架,以简化配置和提升开发效率。

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate

    在"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA+JdbcTemplate"的DEMO中,开发者通常会创建一个Maven工程,配置相关依赖,然后分别设置Spring的配置文件(如`applicationContext.xml`)、SpringMVC的配置文件...

    ssh2项目源码

    5. **配置文件**:SSH2项目中的配置文件包括Struts2的`struts.xml`、Spring的`applicationContext.xml`和Hibernate的`hibernate.cfg.xml`。这些文件定义了框架的行为,如Action的映射、Bean的定义、数据源和实体类的...

    ssh开发所需基本jar包

    - `spring-webmvc.jar`: 提供了Spring的MVC框架,与Struts2类似但提供了更灵活的配置。 - `spring-aop.jar`: 支持AOP编程,包括切点、通知等。 - `spring-aspects.jar`: 与 AspectJ 集成,提供更强大的AOP功能。 ...

    ssh1实现简单的增删查改i+ssh2实现crud

    SSH1和SSH2分别代表了该框架的两个不同版本。在本文中,我们将深入探讨SSH框架的基本概念,以及如何利用它们来实现CRUD(创建、读取、更新和删除)操作。 **SSH1整合实例** SSH1指的是Struts1、Spring1和Hibernate1...

    SSH2配置及jar包说明(包含jar包)

    下面将详细介绍SSH2框架的配置过程、涉及的jar包及其作用,以及如何搭建SSH框架。 1. **Struts2框架**:Struts2是基于MVC设计模式的Java Web框架,主要负责控制层。它的核心是Action类,通过配置struts.xml文件来...

    整合Spring Data JPA1

    - 基本 CRUD 操作:通过继承 `JpaRepository` 的接口,如 `MyEntityRepository`,可以直接使用 `save()`, `findAll()`, `findById()`, `deleteById()` 等方法。 - 动态查询:利用 `JpaSpecificationExecutor` 接口...

    SSH(Spring+Hibernate+Struts2)框架整合必须的85个jar包

    这85个jar包涵盖了SSH框架整合所需的基础库和依赖,开发者可以通过它们搭建起一个基本的SSH项目,并进行后续的开发和扩展。在实际项目中,还需要结合具体需求和环境选择合适的版本,并可能需要添加额外的库以支持更...

    ssh2框架基本增删改查

    SSH2框架,全称为Spring、Struts2和Hibernate2,是Java Web开发中常见的MVC(Model-View-Controller)架构的实现。...在实际项目中,还可以结合其他技术和工具,如MyBatis、JPA等,进一步优化和扩展SSH2的功能。

    ssh2libs集合spring3.2+hibernate4.1+struts2

    对于初学者,推荐先学习SSH2每个组件的基本概念和使用方法,再结合实际项目进行实践。网上有许多SSH2的入门教程和示例项目,可供参考和学习。同时,不断阅读官方文档和社区讨论,能加深对这些框架的理解,提高开发...

    maven管理的ssh框架demo

    它可能包括了基本的配置文件(如struts.xml、spring-context.xml、hibernate.cfg.xml)、Java源代码、以及Maven的pom.xml配置文件。这个简单的项目可能用于演示如何将这三个框架整合在一起,尽管其复杂度不高,但...

    ssh2框架开发基本jar

    本压缩包"ssh2框架开发基本jar"提供了这三个框架的基础库,便于开发者进行集成开发。 **Struts 2.0** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它继承了Struts 1的优点并引入了更多现代特性...

    ssh(struts2[1].2.1+_hibernate3.6+spring3.0.5)整合配置.doc

    在本文中,我们将详细介绍如何手动配置SSH(Struts2 2.2.1、Hibernate 3.6和Spring 3.0.5)的整合。 首先,你需要准备好以下软件和库: 1. Struts2的最新版本,这里是Struts2 2.2.1,对应的压缩包为`struts2-2.2.1...

    ssh整合基本开发包

    SSH整合基本开发包是Java开发中的一个重要组成部分,SSH是指Spring、Struts和Hibernate这三个开源框架的缩写。这些框架在企业级应用开发中被广泛使用,它们分别负责控制层、表现层和持久层的管理。下面我们将详细...

    eclipse下ssh2框架

    以上就是基于Eclipse的SSH2框架项目的基本构建和运行流程。SSH2框架提供了强大的企业级应用开发能力,但同时也有较高的学习曲线。理解并熟练掌握这三个框架的整合,对于提升Java Web开发技能非常有帮助。

Global site tag (gtag.js) - Google Analytics