使用Spring Data JPA,需要整合Spring与Spring Data JPA,并且需要提供JPA的服务提供者hibernate,所以需要导入spring相关坐标,hibernate坐标,数据库驱动坐标等

  1. <properties>
  2. <spring.version>4.2.4.RELEASE</spring.version>
  3. <hibernate.version>5.0.7.Final</hibernate.version>
  4. <slf4j.version>1.6.6</slf4j.version>
  5. <log4j.version>1.2.12</log4j.version>
  6. <c3p0.version>0.9.1.2</c3p0.version>
  7. <mysql.version>5.1.6</mysql.version>
  8. </properties>
  9.  
  10. <dependencies>
  11. <!-- junit单元测试 -->
  12. <dependency>
  13. <groupId>junit</groupId>
  14. <artifactId>junit</artifactId>
  15. <version>4.9</version>
  16. <scope>test</scope>
  17. </dependency>
  18.  
  19. <dependency>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring-context-support</artifactId>
  22. <version>${spring.version}</version>
  23. </dependency>
  24.  
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-aspects</artifactId>
  28. <version>${spring.version}</version>
  29. </dependency>
  30.  
  31. <dependency>
  32. <groupId>org.springframework</groupId>
  33. <artifactId>spring-orm</artifactId>
  34. <version>${spring.version}</version>
  35. </dependency>
  36. <!-- spring end -->
  37.  
  38. <!-- hibernate beg -->
  39. <dependency>
  40. <groupId>org.hibernate</groupId>
  41. <artifactId>hibernate-core</artifactId>
  42. <version>${hibernate.version}</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.hibernate</groupId>
  46. <artifactId>hibernate-entitymanager</artifactId>
  47. <version>${hibernate.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.hibernate</groupId>
  51. <artifactId>hibernate-validator</artifactId>
  52. <version>5.2.1.Final</version>
  53. </dependency>
  54. <!-- hibernate end -->
  55.  
  56. <!-- c3p0 beg -->
  57. <dependency>
  58. <groupId>c3p0</groupId>
  59. <artifactId>c3p0</artifactId>
  60. <version>${c3p0.version}</version>
  61. </dependency>
  62. <!-- c3p0 end -->
  63.  
  64. <!-- log end -->
  65. <dependency>
  66. <groupId>log4j</groupId>
  67. <artifactId>log4j</artifactId>
  68. <version>${log4j.version}</version>
  69. </dependency>
  70.  
  71. <dependency>
  72. <groupId>org.slf4j</groupId>
  73. <artifactId>slf4j-api</artifactId>
  74. <version>${slf4j.version}</version>
  75. </dependency>
  76.  
  77. <dependency>
  78. <groupId>org.slf4j</groupId>
  79. <artifactId>slf4j-log4j12</artifactId>
  80. <version>${slf4j.version}</version>
  81. </dependency>
  82. <!-- log end -->
  83.  
  84. <dependency>
  85. <groupId>mysql</groupId>
  86. <artifactId>mysql-connector-java</artifactId>
  87. <version>${mysql.version}</version>
  88. </dependency>
  89.  
  90. <dependency>
  91. <groupId>org.springframework.data</groupId>
  92. <artifactId>spring-data-jpa</artifactId>
  93. <version>1.9.0.RELEASE</version>
  94. </dependency>
  95.  
  96. <dependency>
  97. <groupId>org.springframework</groupId>
  98. <artifactId>spring-test</artifactId>
  99. <version>4.2.4.RELEASE</version>
  100. </dependency>
  101.  
  102. </dependencies>

整合Spring Data JPA与Spring整合

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:task="http://www.springframework.org/schema/task-4.1"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
  11. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
  13. http://www.springframework.org/schema/data/jpa
  14. http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
  15.  
  16. <!-- 1.dataSource 配置数据库连接池-->
  17. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  18. <property name="driverClass" value="com.mysql.jdbc.Driver" />
  19. <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/jpa" />
  20. <property name="user" value="root" />
  21. <property name="password" value="root" />
  22. </bean>
  23.  
  24. <!-- 2.配置entityManagerFactory -->
  25. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  26. <property name="dataSource" ref="dataSource" />
  27. <property name="packagesToScan" value="cn.oracle.entity" />
  28. <property name="persistenceProvider">
  29. <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
  30. </property>
  31.  
  32. <!--JPA的供应商适配器-->
  33. <property name="jpaVendorAdapter">
  34. <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  35. <property name="generateDdl" value="false" />
  36. <property name="database" value="MYSQL" />
  37. <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
  38. <property name="showSql" value="true" />
  39. </bean>
  40. </property>
  41.  
  42. <property name="jpaDialect">
  43. <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
  44. </property>
  45. </bean>
  46.  
  47. <!-- 3.事务管理器-->
  48. <!-- JPA事务管理器 -->
  49. <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  50. <property name="entityManagerFactory" ref="entityManagerFactory" />
  51. </bean>

  52. <!-- 整合spring data jpa-->
  53. <jpa:repositories base-package="cn.oracle.dao"
  54. transaction-manager-ref="transactionManager"
  55. entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>

  56. <!-- 4.txAdvice-->
  57. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  58. <tx:attributes>
  59. <tx:method name="save*" propagation="REQUIRED"/>
  60. <tx:method name="insert*" propagation="REQUIRED"/>
  61. <tx:method name="update*" propagation="REQUIRED"/>
  62. <tx:method name="delete*" propagation="REQUIRED"/>
  63. <tx:method name="get*" read-only="true"/>
  64. <tx:method name="find*" read-only="true"/>
  65. <tx:method name="*" propagation="REQUIRED"/>
  66. </tx:attributes>
  67. </tx:advice>
  68.  
  69. <!-- 5.aop-->
  70. <aop:config>
  71. <aop:pointcut id="pointcut" expression="execution(* cn.oracle.service.*.*(..))" />
  72. <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
  73. </aop:config>
  74.  
  75. <context:component-scan base-package="cn.oracle"></context:component-scan>
  76.  
  77. <!--组装其它 配置文件-->
  78.  
  79. </beans>

映射实体类

  1. package cn.oracle.entity;
  2.  
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.GeneratedValue;
  6. import javax.persistence.GenerationType;
  7. import javax.persistence.Id;
  8. import javax.persistence.Table;
  9.  
  10. /**
  11. *
  12. * * 所有的注解都是使用JPA的规范提供的注解,
  13. * * 所以在导入注解包的时候,一定要导入javax.persistence下的
  14. */
  15. @Entity //声明实体类
  16. @Table(name="customer") //建立实体类和表的映射关系
  17. @Data
  18. public class Customer {
  19.  
  20. @Id//声明当前私有属性为主键
  21. @GeneratedValue(strategy=GenerationType.IDENTITY) //配置主键的生成策略
  22. @Column(name="cid") //指定和表中cid字段的映射关系
  23. private Long cId;
  24.  
  25. @Column(name="cname") //指定和表中cname字段的映射关系
  26. private String cName;
  27.  
  28. @Column(name="source")//指定和表中source字段的映射关系
  29. private String source;
  30.  
  31. @Column(name="industry")//指定和表中industry字段的映射关系
  32. private String industry;
  33.  
  34. @Column(name="level")//指定和表中level字段的映射关系
  35. private String level;
  36.  
  37. @Column(name="address")//指定和表中address字段的映射关系
  38. private String address;
  39.  
  40. @Column(name="phone")//指定和表中phone字段的映射关系
  41. private String phone;
  42. }

编写符合Spring Data JPA规范的Dao层接口

Spring Data JPA是spring提供的一款对于数据访问层(Dao层)的框架,使用Spring Data JPA,只需要按照框架的规范提供dao接口,不需要实现类就可以完成数据库的增删改查、分页查询等方法的定义,极大的简化了我们的开发过程。

在Spring Data JPA中,对于定义符合规范的Dao层接口,我们只需要遵循以下几点就可以了:

1.创建一个Dao层接口,并实现JpaRepository和JpaSpecificationExecutor

2.提供相应的泛型

  1. package cn.oracle.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.data.jpa.repository.JpaRepository;
  6. import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  7.  
  8. import cn.oracle.entity.Customer;
  9.  
  10. /**
  11. * JpaRepository<实体类类型,主键类型>:用来完成基本CRUD操作
  12. * JpaSpecificationExecutor<实体类类型>:用于复杂查询(分页等查询操作)
  13. */
  14. public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> {
  15. }

这样我们就定义好了一个符合Spring Data JPA规范的Dao层接口

基本CRUD操作

完成了Spring Data JPA的环境搭建,并且编写了符合Spring Data JPA 规范的Dao层接口之后,就可以使用定义好的Dao层接口进行客户的基本CRUD操作

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations="classpath*:*applicationContext.xml")
  3. public class CustomerDaoTest {
  4.  
  5. @Autowired
  6. private CustomerDao customerDao;
  7.  
  8. /**
  9. * 保存客户:调用save(obj)方法
  10. */
  11. @Test
  12. public void testSave() {
  13. Customer c = new Customer();
  14. c.setCName("张三");
  15. customerDao.save(c);
  16. }
  17.  
  18. /**
  19. * 修改客户:调用save(obj)方法
  20. * 对于save方法的解释:如果执行此方法是对象中存在id属性,即为更新操作会先根据id查询,再更新
  21. * 如果执行此方法中对象中不存在id属性,即为保存操作
  22. *
  23. */
  24. @Test
  25. public void testUpdate() {
  26. //根据id查询id为1的客户
  27. Customer customer = customerDao.findOne(1l);
  28. //修改客户名称
  29. customer.setCustName("张三");
  30. //更新
  31. customerDao.save(customer);
  32. }
  33.  
  34. /**
  35. * 根据id删除:调用delete(id)方法
  36. */
  37. @Test
  38. public void testDelete() {
  39. customerDao.delete(1l);
  40. }
  41.  
  42. /**
  43. * 根据id查询:调用findOne(id)方法
  44. */
  45. @Test
  46. public void testFindById() {
  47. Customer customer = customerDao.findOne(2l);
  48. System.out.println(customer);
  49. }
  50. }

16 搭建Spring Data JPA的开发环境的更多相关文章

  1. Spring Data JPA 一:环境搭建

    搭建开发环境是最麻烦的事情,各种冲突各种异常,记一下搭建过程,仅供大家参考: 用的gradle搭建的项目,先亮一下项目的大概目录: 注意一定要是这个 web工程用spring/src/main/web ...

  2. 使用IDEA和gradle搭建Spring MVC和MyBatis开发环境

    1. 概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐 ...

  3. Dive into Spring framework -- 搭建spring 源码的开发环境

    spring是一个类之间依赖的管理容器,大家都知道,但我们中很多人都仅仅停留在使用的层面,但spring本身具有极大的研究价值,所以在使用了几年spring之后,还是想深入的探究一下其根源.记录于此, ...

  4. 搭建 Spring 2.5.6 开发环境

    1.jar 包准备: spring 2.5.6 的 jar 包(链接: http://pan.baidu.com/s/1skVFfcx 密码: mbiz),如图: commons-logging-1. ...

  5. spring data jpa(一)

    第1章     Spring Data JPA的快速入门 1.1   需求说明 Spring Data JPA完成客户的基本CRUD操作 1.2   搭建Spring Data JPA的开发环境 1. ...

  6. 12 Spring Data JPA:springDataJpa的运行原理以及基本操作(上)

    spring data jpaday1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理 day2:springdatajpa的基本操作 ...

  7. Spring Data JPA 整合Spring

    1.1   Spring Data JPA 与 JPA和hibernate之间的关系 JPA是一套规范,内部是有接口和抽象类组成的.hibernate是一套成熟的ORM框架,而且Hibernate实现 ...

  8. JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文带你厘清个中曲直,给你个选择SpringDataJPA的理由!

    序言 Spring Data JPA作为Spring Data中对于关系型数据库支持的一种框架技术,属于ORM的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度. 本文档隶属于< ...

  9. 【Spring Data JPA篇】项目环境搭建(一)

    项目环境: spring4.1.6 hibernate4.3.11 spring-data-jpa1.9.0 1. 创建一个Java Project,将jar导入到lib目录下 #spring spr ...

随机推荐

  1. Exchange Online 权限管理

    在Exchange管理中心,通过权限管理可为管理员.普通用户以及Outlook Web App分别制定不同的权限和策略,以满足精细化分工或差异化角色的需要. 一.管理角色组 组织管理者使用角色组来向管 ...

  2. QTP基本循环正常遍历(代码方式实现)

    0 环境 系统环境:win7 1 操作(正常遍历篇) 1.1 代码前看 systemutil.Run "D:\Program Files (x86)\HP\QuickTest Profess ...

  3. JavaScript创建函数的方式

    在JavaScript中,创建函数是比较常见的操作,但是JavaScript中怎么创建函数呢,有几种方式可以创建函数呢?在JavaScript一般有三种方式创建对象1.函数声明方式格式:functio ...

  4. Linux文件属性和权限

     Linux文件属性 第一栏:表示文件类型和权限 文件的类型:  d:目录    -:文件    l:链接文件    b:可存储设备    c:可输入设备 第一组:表示拥有者权限 第二组:表示该组的权 ...

  5. hashMap插入初始值

    加了this. 就很容易看出来是使用了内部类和{}代码块 当然也可以把this去掉, 更简洁, 只是不能一眼看出来怎么初始化的 类似的可以做ArrayList ....的初始化

  6. PP图|QQ图|正态性检验|K-S检验|S-W检验|

    应用统计学: 物理条件一致时,有理由认为方差是一致的.配对检验可排除物理影响,使方差变小,但是自由度降低了,即样本数变小.二项分布均值假设检验的模型要依据前面的假设条件: PP图统计图要看中间的贴近情 ...

  7. 关于js中的比较时遇到的坑

    关于JavaScript中比较遇到的坑 当你的要比较数字的大小但是你的数字确是字符串时,就会出错比如说: console.log('5' > '6') // fasle consloe.log( ...

  8. OA|开放获取期刊|掠夺性期刊|DOI|ORCID|图书馆服务|零次文献|信息素质|

    OA|开放获取期刊|掠夺性期刊|DOI|ORCID|图书馆服务|零次文献| 信息检索 信息素质是什么? 信息素质是指一个人的信息需求.信息意识.信息知识.信息道德.信息能力方面的基本素质. Some ...

  9. idea 内存溢出解决方法

    在Run/Debug configuration 的 vm options里面输入 -server -XX:PermSize=128M -XX:MaxPermSize=256m 具体如下图:

  10. SpringDataJpa2

    1.SpringDataJpa的扩展 - 抽取 创建一个BaseRepository接口然后去继承JpaRepository和JpaSpecificationExecutor 然后在里面写我们自己想要 ...