spring整合jpa
dev.firnow.com 时间 : 2010-07-19 作者:网络 编辑:huyang629 点击: 247 [ 评论 ]
-
-
spring配置文件:
<context:component-scan base-package="com.sincere" />
<!--
载入.properties属性文件
classpath表示类路径,在WEB应用中就是clases下,
只有单个.properties属性文件时,使用这种方式
<context:property-placeholder location="classpath:jdbc.properties" />
-->
<!-- 指定属性文件地址,可以在这里定义多个属性文件
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:smtp.properties</value>
<value>classpath:jdbc.properties</value>
</list>
</property>
<property name="fileEncoding" value="utf-8"/>
</bean>
-->
<!-- 使用数据源和指定persistence.xml位置的方式创建entityManagerFactory,如果使用的不是hibernate JPA实现,
需要在tomcat作一些特殊配置.具体参考手册
注意:使用该方式需要把persistence.xml中的hibernate.connection.driver_class,hibernate.connection.username,hibernate.connection.password,hibernate.connection.url配置删除
-->
<!-- 只有单个.properties属性文件时,才能使用使用这种方式-->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 数据源信息 ,集成DBCP连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="initialSize" value="${initialSize}" />
<property name="maxActive" value="${maxActive}" />
<property name="maxIdle" value="${maxIdle}" />
<property name="minIdle" value="${minIdle}" />
</bean>
<!--
数据源信息 ,集成proxool连接池
参数:1、driverUrl 用户名及密码写在 url 中
2、user和password 用户名及密码写在 url 中,在以下属性中用户名及密码可不写,但该属性必须存在。
3、prototypeCount 一旦发现空闲的连接数没达到该值将建链
4、simultaneousBuildThrottle 一次建链的数量,生产环境可设置为5
5、maximumConnectionCount 生产环境应把该值设置为50
6、minimumConnectionCount 生产环境应把该值设置为10
7、maximumActiveTime 每连接每次使用的最大时长(毫秒)
8、houseKeepingSleepTime proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
9、overloadWithoutRefusalLifetime 满负载时,等待的时长
10、trace 是否启用日志跟综
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="driverUrl" value="jdbc:mysql://localhost:3306/priceangelsmmdb?user=yourname&password=yourpass&useUnicode=true&characterEncoding=UTF-8" />
<property name="user" value="root" />
<property name="password" value="mysql" />
<property name="prototypeCount" value="5" />
<property name="simultaneousBuildThrottle" value="5" />
<property name="maximumConnectionCount" value="10000" />
<property name="minimumConnectionCount" value="10" />
<property name="maximumActiveTime" value="300000" />
<property name="houseKeepingSleepTime" value="90000" />
<property name="houseKeepingTestSql" value="select 1 from dual" />
<property name="overloadWithoutRefusalLifetime" value="30000" />
<property name="trace" value="true" />
</bean>-->
<!-- ============================================spring与JPA集成配置开始=================================================================== -->
<!-- Spring与JPA的集成,也就只要配制entityManagerFactory和transactionManager两个Bena,就可以了 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<!-- 没有使用数据源时Spring集成JPA,参数"persistenceUnitName"的值必需与persistence.xml文件里的<persistence-unit name="jpatest" transaction-type="RESOURCE_LOCAL">,name的值相同
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="itcast"/>
</bean>
-->
<!-- 指定所使用的事务管理器,来管理数据库事务,这里指定了使用的是JPA事务管理器(也还有别的事务管理器,如果Hibernate事务管理器) -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- ============================================spring与JPA集成配置结束=================================================================== -->
<!--============================================================================================================
Make all @Transactional beans
将所有具有@Transactional注解的Bean 自动配置为声明式事务支持
<tx:annotation-driven ..../>这一行配置用于开启声明式事务功能的,如果说只注释@Transactional,也是没有事务支持的.
事务边界被限制在每个具有事务功能的对象方法中,在方法调用时开始事务,在方法返回时提交事务.
@Transactional 定义在类或接口中,此时事务边界被限制在对象中的每个方法前后
============================================================================================================-->
<!-- Activates @Transactional for DefaultImageDatabase -->
<tx:annotation-driven transaction-manager="transactionManager" />
jpa配置文件persistence.xml
<persistence-unit name="jpatest" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<!--
使用数据源和指定persistence.xml位置的方式创建entityManagerFactory,如果使用的不是hibernate JPA实现,
需要在tomcat作一些特殊配置.具体参考手册
注意:使用该方式需要把persistence.xml中的hibernate.connection.driver_class,hibernate.connection.username,hibernate.connection.password,hibernate.connection.url配置删除
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpatest?useUnicode=true&characterEncoding=UTF-8"/>
-->
<property name="hibernate.max_fetch_depth" value="3"/>
<!--
说明:这里所指的创建和更新都是要数据库已经存在的情况下,即它只是去创建和更新表结构,而不会创建数据库
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构(更新过程中,删除JavaBean属性时时不会把数据库的字段也一同删除,当添加一个JavaBean时属性时总是会把数据库表中这个的这个字段设计成可以为空)
总结:
1.请慎重使用此参数,没必要就不要随便用。
2.如果发现数据库表丢失,请检查hibernate.hbm2ddl.auto的配置 可设置 <property name="hibernate.hbm2ddl.auto" value="none" />
-->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<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>
原文出处:http://dev.firnow.com/course/3_program/java/javajs/20100719/459273.html
分享到:
相关推荐
例如,在WebSphere 6.1上部署基于SSH2(Spring + Struts2 + Hibernate)和JPA2的应用程序时,由于WebSphere 6.1使用的是IBM JDK 1.5,且内置的一些jar包版本较老,这可能导致与SSH2架构中的新版本jar包存在不兼容的...
Hibernate 3.3版本引入了对JPA的支持、增强了性能和查询能力。 这个项目可能是为了展示如何在portlet环境下,使用Struts2处理前端请求,Spring管理业务逻辑和依赖,以及Hibernate处理数据库操作。开发者可能通过...
JPA Spring Data: 致力于减少数据访问层(DAO)的开发量。开发者唯一要做的,就只是声明持久层的接口,其他都交给Spring Data JPA 来帮你完成! 框架怎么可能代替开发者实现业务逻辑呢?比如:当有一个UserDao....
【标题】:“JAVA OA平台源码(转载)SPRING BOOT...” 这个开源项目是一个基于Java技术的OA(Office Automation)管理系统的源代码实现,利用了Spring Boot框架进行开发。Spring Boot是Spring生态中的一个核心组件...
Spring框架是企业级应用开发的基石,面试可能围绕IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)展开,包括Bean管理、依赖注入、事务处理、Spring MVC、Spring Boot、Spring Data JPA等。...
- **数据库存储**:如果需要保存聊天记录,可能需要连接数据库,如MySQL或MongoDB,使用JPA或MyBatis进行数据操作。 综上所述,构建一个Java实现的局域网聊天软件涉及众多技术,包括Java网络编程、多线程、IO流、...
特别是对Maven的单模块或多模块项目,如何结合Spring MVC、Spring、Mybatis和Spring Data JPA等框架进行详细介绍。 为了提升工作效率,教程特别讲解了IntelliJ IDEA的常用设置、快捷键的使用,并且对于Windows转Mac...
4. **JPA and Hibernate**: Java持久层API和其最常用的实现,用于操作数据库。 5. **Thymeleaf or other Template Engines**: 用于渲染动态视图,将数据与HTML模板结合。 6. **RESTful API**: 设计API遵循REST原则,...
java8 stream 源码 StudyNotes [TOC] Java Java编程思想 Spring in action Java8实战 自己的Java学习笔记 为什么说HashMap是不安全的(即将开坑...) 什么是 APT(annotation processing ...转载 JPA
转载请注明:【JackFrost的博客】更多内容,可以访问喜欢就给个star咯,谢谢大家。一,项目介绍(功能业务逻辑,运用的知识,项目数据库等)(1)功能介绍:1.添加管理账号,包括账号,密码,你的名字(新旧名字)。...