以下是本人的一些理解 如有误的地方欢迎指出 谢谢!

jpa.LocalContainerEntityManagerFactoryBean 与 hibernate的sessionFactory一样都实现了对session的操作

LocalContainerEntityManagerFactoryBean的优势在于当系统需要更换orm框架时不需要太多改动 兼容性好

缺点则是无法使用一些hibernate session的高级功能

下面我们来看LocalContainerEntityManagerFactoryBean 的配置

    <!-- jpa Entity Factory 效果等同于 Hibernate的sessionFactory 都是用来操作session的 entityManagerFactory
更加灵活 在项目更换orm框架的时候代码不需要大改动 还是不能使用一些hibernate的高级功能 -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceProxy" />
<property name="packagesToScan" ref="com.ssharing.basicflt.**.entity" /> <!-- 持久化单元名称 -->
<property name="persistenceUnitName" value="${jpa.persistenceUnitName}" />
<!-- 持久化实现厂商 -->
<property name="persistenceProvider">
<bean class="org.hibernate.ejb.HibernatePersistence" />
</property>
<!-- 用于设置实现厂商JPA实现的特定属性 如hibernate的generateDdl -->
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="${jpa.generateDdl}" />
<property name="database" value="${jpa.database}" />
<property name="showSql" value="${jpa.showSql}" />
</bean>
</property>
<!-- 数据库方言 如mysql中分页只需要使用limit就可以了 本例使用mssql 故注释掉 -->
<!-- <property name=""> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"
/> </property> -->
<!-- 指定JPA属性 -->
<property name="jpaPropertyMap">
<map>
<!-- javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误。 -->
<entry key="javax.persistence.validation.mode" value="NONE" />
<!-- 关闭命名查询 -->
<entry key="hibernate.query.startup_check" value="false" />
<!-- hibernate进行自动转换true 1, false 0, yes ’Y’, no ’N’ 如mssql只支持bit(0、1)类型 -->
<entry key="hibernate.query.substitutions" value="${hibernate.query.substitutions}" />
<!-- 为Hibernate关联的批量抓取设置默认数量.取值 建议的取值为4, 8, 和16 -->
<entry key="hibernate.default_batch_fetch_size" value="${hibernate.default_batch_fetch_size}" />
<!-- 为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取.取值 建议在0到3之间取值 -->
<entry key="hibernate.max_fetch_depth" value="${hibernate.max_fetch_depth}" />
<!-- 如果开启, Hibernate将收集有助于性能调节的统计数据. -->
<entry key="hibernate.generate_statistics" value="${hibernate.generate_statistics}" />
<!-- Enables the use of bytecode manipulation instead of runtime reflection -->
<entry key="hibernate.bytecode.use_reflection_optimizer"
value="${hibernate.bytecode.use_reflection_optimizer}" />
<!-- 开启关闭二级缓存 -->
<entry key="hibernate.cache.use_second_level_cache" value="${hibernate.cache.use_second_level_cache}" />
<!-- 开启关闭查询缓存 -->
<entry key="hibernate.cache.use_query_cache" value="${hibernate.cache.use_query_cache}" />
<entry key="hibernate.cache.region.factory_class" value="${hibernate.cache.region.factory_class}" />
<!-- ehcache配置文件路径 -->
<entry key="net.sf.ehcache.configurationResourceName" value="${net.sf.ehcache.configurationResourceName}" />
<!-- 强制Hibernate以更人性化的格式将数据存入二级缓存 -->
<!-- 监控二级缓存数据需要将该项以及 hibernate.generate_statistics 设置为true -->
<entry key="hibernate.cache.use_structured_entries" value="${hibernate.cache.use_structured_entries}" />
</map>
</property>
</bean>

  

JPA entityManagerFactory配置详解的更多相关文章

  1. Spring Data JPA @EnableJpaRepositories配置详解

    @EnableJpaRepositories注解用于Srping JPA的代码配置,用于取代xml形式的配置文件,@EnableJpaRepositories支持的配置形式丰富多用,本篇文章详细讲解. ...

  2. Hibernate4之JPA规范配置详解

    @Table Table用来定义entity主表的name,catalog,schema等属性. 属性说明: name:表名 catalog:对应关系数据库中的catalog schema:对应关系数 ...

  3. 【Spring】——声明式事务配置详解

    项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...

  4. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  5. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  6. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  7. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  8. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

  9. logback配置详解2<appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

随机推荐

  1. LINUX CENTOS关机与重启命令详解

    Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.s ...

  2. 使用ES6的Promise 解决回调函数。

    //创建一个Promise实例,获取数据.并把数据传递给处理函数resolve和reject.需要注意的是Promise在声明的时候就执行了. var getUserInfo=new Promise( ...

  3. gradle_学习_02_gradle多模块构建实例

    一.前言 二.多模块构建 1.工程结构 父工程:weixin-service 子模块:weixin-gz weixin-qy 2.父工程 weixin-service (1)build.gradle ...

  4. MySQL5 LOAD DATA 的使用

    MySQL5 LOAD DATA 的使用   数据库中,最常见的写入数据方式是通过SQL INSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在 ...

  5. UVA 10417 Gift Exchanging

    #include <iostream> #include <cstring> #include <stdio.h> #include <math.h> ...

  6. 如何打开 Windows 的热键提示

    如何打开 Windows 的热键提示 很早之前我记的 Windows 是有热键提示的,不知道什么时候开始默认不显示了,难道 微软是为是美观? 找了一下原来是有地方可以设置的.

  7. Raid信息丢失数据恢复及oracle数据库恢复验证方案

    早些时候,有个客户14块盘的磁盘阵列出现故障,需要恢复的数据是oracle数据库,客户在寻求数据恢复技术支持,要求我提供详细的数据恢复方案,以下是提供给客户的详细数据恢复解决方案,本方案包含Raid数 ...

  8. 记一次内存溢出的分析经历——使用thrift

    背景: 有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个), 服务端用Java写的(带管理页面),属于RPC模式,中间的 ...

  9. git之commit改用第三方编辑器

    git commit -m "***"方式提交注释,有限制,可通过调用第三方编辑器来编辑更好的注释 1 使用window自带的记事本 git config --global cor ...

  10. WPF基本概念入门

    关于数据类型,有原子类型,列表类型,字典类型等等,而wpf对应控件有contentControl,itemsControl,headerItemsControl等. 控件和类型一一对应,控件和类型之间 ...