简单springmvc+hibernate+jpa配置

2018-01-25 阅读(187)

一份简单的 springmvc+hibernate+jpa 配置,备忘。JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。


spring-database.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:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/data/jpa
       http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!-- 使用注解的方式注入,能在java代码中使用注解注入properties文件中相应的value值 -->
    <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <!-- locations属性可以在下面配置多个properties文件 -->
        <property name="locations">
            <list>
                <value>classpath:/config.properties</value>
            </list>
        </property>
    </bean>
    <!-- 加载配置文件 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties" ref="configProperties" />
    </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}" />
        <!-- 申请连接时执行validationQuery检测连接是否有效 -->
        <property name="testOnBorrow" value="true" />
        <!-- 归还连接时执行validationQuery检测连接是否有效 -->
        <property name="testOnReturn" value="true" />
        <!-- 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效 -->
        <property name="testWhileIdle" value="true" />
        <!-- 设置的Evict线程的时间,单位:毫秒,即每隔多少时间去检测一次空闲连接是否超时,默认值为-1,即不开启 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 设定在进行后台对象清理时,每次检查几个链接,默认值是3 -->
        <property name="numTestsPerEvictionRun" value="3" />
        <!-- 池启动时创建的连接数量 -->
        <property name="initialSize" value="5" />
        <!-- 在不新建连接的条件下,池中保持空闲的最少连接数 -->
        <property name="minIdle" value="1" />
        <!-- 同一时间可以从池分配的最多连接数量,设置为0时表示无限制 -->
        <property name="maxActive" value="20" />
        <!-- 在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时),设置为-1表示无限等待 -->
        <property name="maxWait" value="60000" />
        <!-- 连接保持空闲而不被驱逐的最长时间 -->
        <property name="minEvictableIdleTimeMillis" value="60000" />
        <!-- 从数据源中返回的连接是否采用自动提交机制,默认值为 true -->
        <property name="defaultAutoCommit" value="false" />
    </bean>

    <!-- 配置实体管理工厂,容器管理类型的JPA -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:dataSource-ref="dataSource">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="${jpa.database}" p:showSql="${jpa.showSql}" />
        </property>
        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider"></bean>
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">${jpa.hbm2ddl.auto}</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
        <property name="persistenceUnitName" value="jackson"/>
        <property name="packagesToScan">
            <list>
                <value>com.weizhixi.entity</value>
            </list>
        </property>
    </bean>

    <!-- jpa事务管理器 -->
    <bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
          p:entityManagerFactory-ref="entityManagerFactory" />

    <!-- 配置事务方案,开启注解事务,支持事务注解 -->
    <tx:annotation-driven transaction-manager="jpaTransactionManager" />

    <!-- jpa重要配置,启用扫描并自动创建代理的功能  -->
    <jpa:repositories base-package="com.weizhixi.repository"
                      transaction-manager-ref="jpaTransactionManager"
                      entity-manager-factory-ref="entityManagerFactory">
    </jpa:repositories>

</beans>


config.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&characterSetResults=UTF-8
jdbc.username=root
jdbc.password=root

jpa.showSql=true
jpa.hbm2ddl.auto=update
jpa.database=MYSQL


commons-dbcp-1.4.jar

<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>


原创文章,转载请注明出处:https://www.weizhixi.com/user/index/article/id/67.html

分类:
点击(219) 阅读(187) 举报