又来了一个懵懂少年,看我怎么骗你的。

来我们开始学习吧。

  1. PropertyPlaceholderConfigure
载入属性文件:
例如:
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="location"value="classpath:test.properties"/></bean>

test.properties属性文件内容如下:

dbc.driverClassName=net.sourceforge.jtds.jdbc.Driver
jdbc.url=jdbc\:jtds\:sqlserver\://localhost\:1433/test
jdbc.username=sa
jdbc.password=123456

载入之后,我们就可以通过${key} 完毕属性值得到填充,比如:

<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}"/>
</bean>

2.定时文件的写法:

 <bean id="reissClientSer"  //bean 的命名class="cn.wiztek.reiss.reiss.service.ReissClient" />//所指向的java类<bean id="reissClient"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">意思就是根据方法名称去执行任务的一个工厂bean。<property name="targetObject" ref="reissClientSer" />// 要和上个bean的id保持一致 ref 应该就是reference 关联的意思<property name="targetMethod" value="reissClient" />//实现方法</bean>
 <bean  id="qzsClientSer" class="cn.wiztek.reiss.updateQzs.service.UpdateQzsClient"/><bean id="updateQzsClient"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="qzsClientSer" /><property name="targetMethod" value="updateQzsClient" /><property name="concurrent" value="false" /></bean><bean id="qzsClientTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="updateQzsClient" /><property name="cronExpression" value="0 0/1 * * * ?" /></bean>
<property name="cronExpression" value="0 0 20 11/1 1,12 ? *" />
是定时的设置,具体按多久执行一次,去百度Corn自己去设置就好了)

corn界面:

3.DriverManagerDataSource
DriverManagerDataSource只是作为一个成熟的连接池的简单替代,只不过实现相同的标准接口,不支持连接池,每次连接数据库都是创建新的连接对象

<bean id = "driverManagerDateSource "  class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql:///springtest" /><property name="username" value="root" /><property name="password" value="abc"></property></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="driverManagerDateSource"></property></bean>
</beans>

JpaTemplate类:

Spring提供JpaTemplate模板类用于简化事务管理及常见操作,类似于JdbcTemplate模板类。

4.LocalContainerEntityManagerFactoryBean
JPA定义了两种,


LocalEntityManagerFactoryBean:程序管理型:实体管理器是在程序直接向实体管理器工厂请求一个实体管理器时创建的。在这种情况下,程序负责打开或关闭实体管理器,并且在事务中控制管理器。这种类型最适合不运行于Java EE容器的独立程序。LocalContainerEntityManagerFactoryBean:容器管理型:实体管理器由Java EE容器创建和管理。这种情况下,程序根本不与实体管理器工厂进行交互,实体管理器是通过注入或利用JNDI直接获得的,容器负责配置实体管理器工厂。这种类型最适合希望不考虑persistence.xml中的特殊性而在JPA配置之上维持某种控制的Java EE容器。

示例:

<bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="ds" /><property name="persistenceUnitName" value="shanwz_persistence" /><property name="packagesToScan" value="com.shanwz.**.entity" /></bean>

关于LocalContainerEntityManagerFactoryBean的属性详细如下:

persistenceUnitManager:用于获取JPA持久化单元,默认实现DefaultPersistenceUnitManager用于解决多配置文件情况。dataSource:用于指定Spring定义的数据源。persistenceXmlLocation:用于指定JPA配置文件,对于多JPA配置文件情况请选择设置persistenceUnitManager属性来解决。persistenceUnitName:用于指定持久化单元名称。persistenceProvider:用于指定持久化实现厂商类,如hibernate为:org.hibernate.ejb.HibernateProvider 类。jpaVendorAdapter:用于设置JPA实现厂商的特定属性,如设置hibernate的是否自动生成DDL的属性generateDdl,这些属性是厂商特定的,因此最好在这里设置。目前spring提供HibernateJpaVendorAdapter,OpenJpaVendorAdapter,EclipseJpaVendorAdapter,TopLinkJpaVenderAdapter四个实现。其中最主要的属性是“database”,用来指定使用的数据库类型。从而根据数据库类型决定如何将数据库特定异常转换为Spring一致性异常。目前支持以下数据库:DB2,DERBY,H2,HSQL,INFORMIX,MySQL,Oracle,POSTGRESQL,SQL_SERVER,SYBASEjpaDialect:用于指定一些高级特性,如事务管理等。目前Spring提供HibernateJpaDialect,OpenJpaDialect,EclipseJpaDialect,TopLinkJpaDialect和DefaultJpaDialect实现。注意DefaultJpaDialect不提供任何功能,因此在使用特定实现厂商的JPA实现时需要指定jpaDialect实现,如使用hibernate就使用HibernateJpaDialect。当指定jpaVendorAdapter属性时可以不指定jpaDialect,会自动设置相应的JpaDialect实现;jpaProperties和jpaPropertyMap:指定JPA属性;如Hibernate中指定是否显示SQL的“hibernate.show_sql”属性,对于jpaProperties设置的属性自动会放进jpaPropertyMap中;loadTimeWeaver:用于指定LoadTimeWeaver实现,从而允许JPA 加载时修改相应的类文件。具体使用得参考相应的JPA规范实现厂商文档,如Hibernate就不需要指定loadTimeWeaver。

5.JpaTransactionManager 事务管理

<bean id="zgjtransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"scope="singleton"><property name="entityManagerFactory" ref="zgjentityManagerFactory" /></bean>

6.PersistenceExceptionTranslationAutoConfiguration

自动配置类PersistenceExceptionTranslationAutoConfiguration的主要目的是启动Spring框架提供的持久化层异常向Spring标准异常的转换机制。

对该机制的启动PersistenceExceptionTranslationAutoConfiguration是通过向容器注册一个PersistenceExceptionTranslationPostProcessor来完成的。PersistenceExceptionTranslationAutoConfiguration向容器注册该组件的条件是:

此组件bean尚未注册;
配置选项spring.dao.exceptiontranslation.enabled未被明确设置为false;
而PersistenceExceptionTranslationPostProcessor是一个BeanPostProcessor。它将每个Repository组件bean包装成一个代理对象并为该代理对象添加一个PersistenceExceptionTranslationAdvisor。该PersistenceExceptionTranslationAdvisor会拦截Repository组件bean的方法调用产生的异常并将其转换成Spring框架标准异常。

7.PersistenceAnnotationBeanPostProcessor

https://blog.csdn.net/andy_zhang2007/article/details/86593188

8.transactionManager

<tx:advice id="zgjtxtAdvice" transaction-manager="zgjtransactionManager"><tx:attributes><tx:method name="get*" propagation="NEVER" /><tx:method name="query*" propagation="SUPPORTS" /><tx:method name="add*" rollback-for="Exception" /><tx:method name="addNewBusiness" propagation="SUPPORTS" /><tx:method name="update*" rollback-for="Exception" /><tx:method name="delete*" rollback-for="Exception" /><tx:method name="save*" rollback-for="Exception" /><tx:method name="init*" rollback-for="Exception" /><tx:method name="gen*" rollback-for="Exception" /><tx:method name="cancel*" rollback-for="Exception" /><tx:method name="execute*" rollback-for="Exception,Throwable" /></tx:attributes></tx:advice>

https://blog.csdn.net/qq_35626763/article/details/80507921

9.aop:config
举个栗子:

<aop:config><aop:pointcut id="loggerCutpoint"expression="execution(* com.how2java.service.ProductService.*(..)) "/><aop:aspect id="logAspect" ref="loggerAspect"><aop:after pointcut-ref="loggerCutpoint" method="log"/></aop:aspect></aop:config>

这个配置过程是什么含义呢?

<aop:pointcut id="loggerCutpoint"
expression="execution(* com.how2java.service.ProductService.*(..)) "/>

(pointcut :切点)
这一句是声明切入点,切入点的 id 叫 loggerCutPoint ,用来标记这个切入点,

这个expression表示:满足expression中的方法调用之后,就会去进行切面操作,类似于触发了切面:

第一个 * 代表返回任意类型
com.how2java.service.ProductService.* 表示包名以 com.how2java.service.ProductService 开头的类的任意方法(第二个*表示任意方法,通配符肯定知道吧)
(…) 表示方法的参数是任意数量和类型

简单说就是,只要com.how2java.service这个包中的ProductService类的任意一个函数被调用,不管你的返回值是什么,都会触发开关,我就会去执行切面,也就是辅助功能,但是辅助功能是什么呢,就是下面两句:

<aop:aspect id="logAspect" ref="loggerAspect"><aop:after pointcut-ref="loggerCutpoint" method="log"/></aop:aspect>

这两句是定义了一个切面,上面说只要触发开关,就会去执行切面,就是指的这里的切面,所谓切面,就是一个类中的方法而已,搞的这个高大上。。。

id代表这个切面的名字,ref就是指的方法所在的类,method代表的就是方法的名字,

pointcut-ref=“loggerCutpoint” 这个就是表示我这个切面是和上面的切点关联起来的(一个切点是可以关联多个切面的,一个切面只能关联一个方法),只要上面的切点被触发,我就会到这里来执行一些辅助功能,搞得和单片机的中断一样,

after表示在切入点触发之后来执行我这个中断,当然也有before,一共有五个before,after,After-returning ,After-throwing,Around。

在 method 参数后面,还可以加上参数列表。

10.BaseDao
贴个例子自己看吧。

class 就是你配置的baseDao的类。
代码简单的写一点:

@Repository("baseDao")
@Transactional
public class BaseDao implements IBaseDao {@PersistenceContextprivate EntityManager entityManager;@Overridepublic void save(Object entity) {getEntityManager().persist(entity);}@Overridepublic <T> void delete(Class<T> entityClass, Object entityId) {Object obj = find(entityClass, entityId);if (obj != null) {getEntityManager().remove(obj);}}
}

关于其他的bean配置方法,比如这种,

 <bean id="updateQzslClientImpl" class="cn.wiztek.reiss.updateQzs.service.impl.UpdateQzsServiceImpl"><property name="baseDao"><ref bean="baseDao" /></property></bean>

就不再赘述。

以上就是全部JPA配置文件的总结,如有错误之处,请及时告知。
告辞!

JPA 配置文件最详细总结,没有之一!相关推荐

  1. php.ini配置文件中文详细解释

    php.ini配置文件中文详细解释 ;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ;  ; 此配置针对开发目的,并且*不是*针对生产环境 ...

  2. resin配置文件的详细解释

    下面是resin配置文件的详细解释: http://blog.chinaunix.net/uid-25892360-id-3059362.html <!-- - Resin 3.1 配置文件. ...

  3. vue-cli的各个配置文件的详细介绍

    1.dev-server.js // dev-server.js // 调用check-versions.js 模块,检查版本node和npm的版本 require('./check-versions ...

  4. 【django】settings.py配置文件内容详细介绍

    配置文件如下,下面对配置文件进行一一解释 """ Django settings for film1_manager project.Generated by 'djan ...

  5. java jpa 配置文件_关于java:如何在JPA配置中设置默认模式名称?

    我发现在hibernate配置文件中我们可以设置参数hibernate.default_schema: ... myschema ... 现在我正在使用JPA,我也希望这样做. 否则我必须为每个@Ta ...

  6. Spring配置文件的详细介绍

    目录 1. Spring的配置文件的命名 2. Spring配置文件中有什么 3. set注入 4. 构造注入 1. Spring的配置文件的命名 答:Spring的配置文件是放在resources文 ...

  7. vsftpd的主配置文件是什么linux,linux下vsftpd配置文件选项详细说明

    //关闭 三.vsftp配置文件各选项说明 #vi /etc/vsftpd/vsftpd.conf 允许匿名登录 12 anonymous_enable=YES 允许本地帐号登录 15 local_e ...

  8. MyBatis自动生成代码之generatorConfig配置文件及其详细解读

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...

  9. 【Python教程】读写ini配置文件的详细操作

    ini文件即Initialization File初始化文件,在应用程序及框架中常作为配置文件使用,是一种静态纯文本文件,使用记事本即可编辑. 配置文件的主要功能就是存储一批变量和变量值,在ini文件 ...

最新文章

  1. 运维的shell小编(1)
  2. django_rest_framework之解析器、渲染器
  3. 入住两年的CSDN,在今天2020年8月27日,成为CSDN博客专家
  4. python (第二章)数据结构
  5. dede plus ad js.php,织梦dedecms/plus/文件夹的功能介绍
  6. Hybrid App基础知识
  7. Proteus中ADC0808的使用注意事项
  8. MapGIS教程-常见问题处理
  9. 中医预约挂号系统,代煎取药功能原来这样用?
  10. kali安装百度网盘客户端
  11. 无权访问同一网络的共享计算机,局域网共享文件夹无权访问怎么办
  12. 【图像处理技术】 | 黑科技解读 之 PS检测、弯曲拉平、切边增强、摩尔纹
  13. 电脑出现问题。你的PIN不可用,请单击以重置——解决方案总结
  14. 利用百度api接口制作在线语音合成软件
  15. 负数除以正数余数如何求_关于数学中求余数问题的一个简单方法
  16. sklearn代码9 7-KNN-salay
  17. 注册一个公众号多少钱_微信公众号申请注册收费吗?要钱吗?多少钱?
  18. python123第三单元测试卷_第三单元测试卷(带答案)
  19. SSH不能传输文件问题
  20. 达索系统、西门子、PTC、欧特克、SAP的PLM系统优缺点比较?

热门文章

  1. 倩女幽魂端游大盗宝藏计算器
  2. Vega 数据分析图表
  3. 一种通用的汽车车身电子单元测试工装ETest的研究设计
  4. 拥塞控制(计算机网络)
  5. cocos2dx骨骼动画Armature源码分析(三)
  6. 天秀! 了解一下GAN都可以做到这些事情
  7. python数据分析之金融欺诈行为检测
  8. 得到你的人却得不到你的心
  9. 前端都需要学习什么?
  10. WireShark实战笔记之DNS协议分析