JPA entityManagerFactory配置详解

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

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>

 

  

转载于:https://www.cnblogs.com/chrischris/p/7122392.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值