Spring Data JPA

1.1  主要内容 

  1. 理解Spring Data JPA基本概念
  2. 独立搭建Spring Data JPA的开发环境
  3. Spring Data JPA的基本增删改查操作
  4. SPring Data JPA的内部原理
  5. 使用SPring Data JPA定义的方法进行查询
  6. SPring Data JPA中的JPQL查询
  7. Spring Data JPA中的方法命名规则查询

 1.2 Spring Data JPA的概述

  • Spring Data JPA是Spring基于ORM框架(Object Relation Mapping)、JPA规范的基础上封装的一套JPA应用框架,可以使开发者用极简的代码即可实现对数据库的访问与操作。它提供了包括增删改查在内的常用功能,且易于扩展,学习与使用。Spring Data JPA可以极大的提高开发效率
  • Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA + ORM(如:hibernate)完成操作,这样在切换不同的ORM框架时提供了极大的方便,同时也使数据库层操作更加简单,方便解耦

1.3 Spring Data JPA与JPA和hibernate之间的关系

  •  JPA是一套规范,内部是有接口和抽象类组成的。hibernate是一套成熟的ORM框架,而且Hibernate实现了JPA规范,所以也可以称hibernate为JPA的一种实现方式,我们使用JPA的API编程,意味着站在更高的角度上看待问题。(面向接口编程)
  • Spring Data JPA是Spring提供的一套对JPA操作更加高级的封装,是在JPA规范下的专门用来进行数据持久化的解决方案。

目标:开发的时候,要带着他们的关系图进行开发(脑海中要有他们的整体架构) 

 Spring Data JPA_第1张图片

 

1.4 Spring Data JPA入门:创建工程、导入依赖

需求:完成客户的增删改查

工程:Maven工程

坐标:导入Spring+hibernate+mysql驱动

 第一步:pom.xml文件


        5.0.2.RELEASE
        5.0.7.Final
        1.6.6
        1.2.12
        0.9.1.2
        5.1.18
    

    
        
        
            junit
            junit
            4.12
            test
        
        
        
        
            org.aspectj
            aspectjweaver
            1.6.8
        

        
            org.springframework
            spring-aop
            ${spring.version}
        

        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-orm
            ${spring.version}
        

        
            org.springframework
            spring-beans
            ${spring.version}
        

        
            org.springframework
            spring-core
            ${spring.version}
        
        
        

        
        
            org.hibernate
            hibernate-core
            ${hibernate.version}
        
        
            org.hibernate
            hibernate-entitymanager
            ${hibernate.version}
        
        
            org.hibernate
            hibernate-validator
            5.2.1.Final
        
        

        
        
            c3p0
            c3p0
            ${c3p0.version}
        
        

        
        
            log4j
            log4j
            ${log4j.version}
        

        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        

        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        
        

        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        

        
            org.springframework.data
            spring-data-jpa
            1.9.0.RELEASE
        

        
            org.springframework
            spring-test
            ${spring.version}
        
        
        
          
            javax.el  
            javax.el-api  
            2.2.4  
          
          
          
            org.glassfish.web  
            javax.el  
            2.2.4  
         
        
    

第二步:整合Spring Data JPA 与Spring(编写applicationContext.xml)

目标:这个配置文件中包含几个大配置

  •     
       
       
       
       
       

 所有的配置如下:




    
    
    
        
        
        
        
        
        
            
        
        
        
            
                
                
                
                
            
        
        
        
            
        
    

    
    
        
        
        
        
    

    
    
        
    
    
    
    

    
    

第三步:使用JPA注解配置映射关系

目标:会进行ORM配置,JPA映射注解

创建客户表

    /*创建客户表*/
    CREATE TABLE cst_customer (
      cust_id BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
      cust_name VARCHAR(32) NOT NULL COMMENT '客户名称(公司名称)',
      cust_source VARCHAR(32) DEFAULT NULL COMMENT '客户信息来源',
      cust_industry VARCHAR(32) DEFAULT NULL COMMENT '客户所属行业',
      cust_level VARCHAR(32) DEFAULT NULL COMMENT '客户级别',
      cust_address VARCHAR(128) DEFAULT NULL COMMENT '客户联系地址',
      cust_phone VARCHAR(64) DEFAULT NULL COMMENT '客户联系电话',
      PRIMARY KEY (`cust_id`)
    ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;`cst_customer`

客户实体类

/**
 * 客户实体类
 */
@Entity
@Table(name="cst_customer")
public class Customer {
    
    @Id
    @Column(name="cust_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long custId;

    @Column(name="cust_name")
    private String custName;

    @Column(name="cust_source")
    private String custSource;

    @Column(name="cust_level")
    private String custLevel;

    @Column(name="cust_industry")
    private String custIndustry;

    @Column(name="cust_address")
    private String custAddress;

    @Column(name="cust_phone")
    private String custPhone;
    
    省略get和set方法
}

 


2.1 使用Spring Data JPA完成需求

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

  • Spring Data JPA是Spring提供的一款对于数据访问层(Dao)层的框架,使用Spring Data JPA,只需要按照框架的规范提供dao接口,不需要实现类就可以完成数据库的增删改查、分页查询等方法的定义,极大的简化了我们的开发过程。
  • 在Spring Data JPA中,对于定义符合规范的Dao层接口,我们只需要遵循以下几点就可以了:
  1. 创建一个Dao层接口,并实现JpaRepository和JpaSpecificationExecutor
  2. 提供相应的泛型
import com.itheima.domain.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/**
 *  编写符合SpringDataJpa规范的dao层接口
 *      1)dao接口所在的包已经在核心配置文件中固定
 *      2)dao接口必须继承两个接口:
 *              * JpaRepository<操作的实体类,主键的类型>
 *              * JpaSpecificationExecutor<操作的实体类>
 */
public interface CustomerDao extends JpaRepository,JpaSpecificationExecutor{
    
}

Dao接口的编写规范:

1)dao接口所在的包在核心配置文件中固定了

2)dao接口继承两个接口:

JpaRepository<操作实体类,主键类型>

JpaSpecificationExecutor<操作的实体类

 目标:查询一个对象,体会是否是极简的代码完成功能

/**
 * Spring整合Junit的方式
 */
@RunWith(SpringJUnit4ClassRunner.class)//替换运行器
@ContextConfiguration("classpath:/applicationContext.xml")//指定核心配置文件
public class Test01_SpringDataJpa_CRUD {

    @Autowired
    private CustomerDao customerDao;

    /**
     * 查询一个对象
     */
    @Test
    public void test1(){
        Customer customer = customerDao.findOne(6L);
        System.out.println(customer);
    }

}

SpringDataJpa入门:CRUD:保存和更新一个对象

目标:掌握保存和更新一个对象的方法

 /**保存一个对象*/
    @Test
    public  void test02(){
        Customer c = new Customer();
        c.setCustName("马化腾");
        customerDao.save(c);
    }

    /***
     * 更新:save方法具有保存和更新的功能:
     *    1)有id,就是更新
     *    2)没有id,就是保存
     */
    @Test
    public  void test03(){
        /**
         * 推荐方式:先查询,后更新
         * */
        Customer c = customerDao.findOne(7L);
        c.setCustName("马云");
        c.setCustAddress("杭州");
        Customer customer = customerDao.save(c);
        System.out.println(customer);
    }

目标:删除一个对象,查询所有对象 

 /**删除一个对象*/
    @Test
    public void test04(){
        customerDao.delete(7L);
    }

    /**查询所有对象*/
    @Test
    public void test05(){
        List customers = customerDao.findAll();
        for (Customer customer : customers) {
            System.out.println(customer);
        }
    }

 

你可能感兴趣的:(Spring,Data,JPA+VUE.js)