文档章节

Spring data JPA + HikariCP简单应用

想不通的250
 想不通的250
发布于 2015/06/09 08:15
字数 541
阅读 166
收藏 2

maven配置

Spring mvc我使用4.1.6,其对应的jpa版本为:Spring mvc我使用4.1.6,其对应的jpa版本为1.9.0.M1(不然mvc的一些方法,在jpa上使用不了,导致加载错误之类):

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.9.0.M1</version>
        </dependency>
    
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP-java6</artifactId>
            <version>2.2.5</version>
        </dependency>
        
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.10.Final</version>
        </dependency>

data-access.properties (数据库配置)

abc.jdbc.driverClassName=com.mysql.jdbc.Driver
abc.jdbc.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&amp;characterEncoding=utf-8
abc.user=xxx
abc.password=xxxx
abc.maxActive=10

datasource-config.xml (数据库连接池配置)

<!-- HikariCP 高性能数据库连接池 -->
    <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
        <property name="poolName" value="springHikariCP" />
        <property name="maximumPoolSize" value="7" />
        <property name="idleTimeout" value="30000" />
        <property name="connectionTimeout" value="120000" />
        <property name="jdbcUrl" value="${uadb.jdbc.url}" />
        <property name="username" value="${uadb.user}" />
        <property name="password" value="${uadb.password}" />
        <property name="driverClassName" value="${uadb.jdbc.driverClassName}" />
    </bean>
    <!-- HikariCP configuration -->
    <bean id="dataSourceMySql" class="com.zaxxer.hikari.HikariDataSource"
        destroy-method="close">
        <constructor-arg ref="hikariConfig" />
    </bean>


applicationcontext.xml(部分重要配置)

<context:property-placeholder location="classpath:data-access.properties" />
<context:component-scan base-package="com.test.devel.*" />
<import resource="datasource-config.xml" />

<!-- 数据库相关 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource">
            <ref bean="dataSourceMySql" /> <!--指定数据库连接池-->
        </property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="generateDdl" value="false" />
                <property name="showSql" value="true" />                
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
            </bean>
        </property> 
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.cache.use_second_level_cache">false</prop><!-- 二级缓存 -->  
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</prop>  
                <prop key="hibernate.format_sql">true</prop>
                <!-- <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
                <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</prop> -->
            </props> 
        </property>
        <property name="packagesToScan" value="com.test.devel.repositories.entity"/>   
    </bean>
    <jpa:repositories base-package="com.test.devel.repositories.*" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" />


例子:

    Entity:

@Entity(name="develConfig")
@Table(name = "devel_config")
public class DevelConfig {
    @Id
    @Column(name = "config_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int configId;
    
    @Column(name = "config_key")
    private String configKey;
    
    @Column(name = "config_value")
    private String configValue;
    
    @Column(name = "config_des")
    private String configDes;

    public int getConfigId() {
        return configId;
    }

    public void setConfigId(int configId) {
        this.configId = configId;
    }

    public String getConfigKey() {
        return configKey;
    }

    public void setConfigKey(String configKey) {
        this.configKey = configKey;
    }

    public String getConfigValue() {
        return configValue;
    }

    public void setConfigValue(String configValue) {
        this.configValue = configValue;
    }

    public String getConfigDes() {
        return configDes;
    }

    public void setConfigDes(String configDes) {
        this.configDes = configDes;
    }

    @Override
    public String toString() {
        return "DevelConfig [configId=" + configId + ", configKey=" + configKey + ", configValue=" + configValue
                + ", configDes=" + configDes + "]";
    }  
}

    Dao:

@Transactional(readOnly = true)
public interface DevelConfigDao extends Repository<DevelConfig, Long>{
     
     public List<DevelConfig> findByConfigId(int configId); 
     
     public List<DevelConfig> findAll();
     
     @Query("select a from develConfig a where a.configId = ?1 and a.configKey = ?2") 
     public List<DevelConfig> findmyQuery(int configId, String configKey); 
}

   Junit  Test

@RunWith(SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations= "classpath:applicationcontext.xml")
@Transactional
public class TestDevelConfig {
    
    @Autowired
    DevelConfigDao develConfigDao;
    
    @Before
    public void setUp() {
    }
    
    @Test
    public void query() {
        List<DevelConfig> list = develConfigDao.findAll();
        for (DevelConfig develConfig : list) {
            System.out.println(develConfig.toString());
        }
    } 
    
    @Test
    public void findConfigById(){
        List<DevelConfig> list = develConfigDao.findByConfigId(1);
        for (DevelConfig develConfig : list) {
            System.out.println(develConfig.toString());
        }
    }
    
    @Test
    public void findByConfigIdAndConfigKey(){
        List<DevelConfig> list = develConfigDao.findmyQuery(1, "SVN_COUNT_URL");
        for (DevelConfig develConfig : list) {
            System.out.println(develConfig.toString());
        }
    }
}


© 著作权归作者所有

共有 人打赏支持
想不通的250
粉丝 6
博文 105
码字总数 17367
作品 0
广州
程序员
私信 提问
Spring Boot入门资料整理

Spring Boot 初识 SpringBoot前世今生 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。 Spring Boot参考指南中文版--Chapter1.Spring Boot中文文档 本节提供...

小致dad
2017/11/07
0
0
Spring Boot [组件学习-Spring Data JPA]

导读: 在上篇文章中对Spring MVC常用的一些注解做了简要的说明,在这篇文章中主要对Spring Data JPA 做一个简要的说明,并附有一个简单的例子,可以体会到Spring Data JPA 的强大之处。 Sp...

yangrd
08/27
0
0
解决spring jpa中配置文件报'jpa:repositories'的问题

一、问题描述 使用spring jpa,报no declaration can be found for element 'jpa:repositories'错误的解决方案 Multiple annotations found at this line: - cvc-complex-type.2.4.c: The mat......

cloud-coder
2014/04/17
0
1
Spring 和 JavaEE的关系

Java EE vs Spring. Or: What is a standard? 什么是JavaEE J2EE是一系列技术标准所组成的平台。JavaEE包含了对一系列标准(接口)的实现。如果你要用这些接口,恐怕要使用JavaEE服务器而不仅...

Finley.Hamilton
2014/11/12
0
0
Spring管理Filter和Servlet

Spring管理filter和servlet 在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建。如果要在filter或者servlet中使用s...

zhwj407906450
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

爬虫教程」Python做一个简单爬虫,小白也能看懂的教程

俗话说“巧妇难为无米之炊”,除了传统的数据源,如历史年鉴,实验数据等,很难有更为简便快捷的方式获得数据,在目前互联网的飞速发展写,大量的数据可以通过网页直接采集,“网络爬虫”应运...

糖宝lsh
今天
1
0
KEIL MDK工程中的宏定义:字符,值,字符串

下图中定义了2个宏: 等效于文件中: #define MCU_FLASH_LESSTHAN_64K #define VERSION_INFO_hw 'a' // MDK :VERSION_INFO_hw="'a'" 即MDK中的VERSION_INFO_hw="'a'" 和 #define VERS......

SamXIAO
今天
0
0
集合的最优子集划分

问题描述:如何将一个个数为n的集合N划分为为若干个子集N1…Nk,其中1≤k≤n,计算出每个子集的最优结果R1…Rk,使得F(R1…Rk)为最优的结果。 这个问题可以分成3步解决: 求出集合所有子集 ...

laolin23
今天
0
0
JavaScript实现在线Markdown编辑器、转换HTML工具-toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
今天
2
0
Source Tree 在git 密码更新后,无法拉取代码的解决办法

背景: git 密码总是需要修改。在修改代码后,拉去代码, source tree 总提示access denied. 解决方法:重新修改git 仓库对应的密码。 for mac:应用程序 -》 钥匙串 -》 搜索 source tre...

Carlyle_Lee
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部