文档章节

Spring data JPA + HikariCP简单应用

想不通的250
 想不通的250
发布于 2015/06/09 08:15
字数 541
阅读 144
收藏 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 和 JavaEE的关系

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

Finley.Hamilton
2014/11/12
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管理Filter和Servlet

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

zhwj407906450
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部