zoukankan      html  css  js  c++  java
  • spring data jpa是什么?

    JPA是一个Java编程语言接口规范,Hibernate ORM是JPA规范的一个实现。
     
    Spring Data JPA能干什么
    [java] view plain copy
     
    1.   

    在开始之前,先举个简单的例子.

        一张表user有三个字段,id、name和age,要查找指定姓氏在某年龄以上的user,在传统的spring+hibernate中,dao层我们是这样写的:

        UserDao:

    [java] view plain copy
     
    1. public interface UserDao{  
    2.     List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);  
    3. }  


        UserDaoImpl(已经是相对简单的HibernateTemplate方式了):
    [java] view plain copy
     
    1. public class UserDaoImpl implements UserDao{  
    2.     @Override  
    3.     public List<User> findByFirstNameAndAge(String firstName, Integer age) {  
    4.         //具体hql查找:"from User where name like '%'"+firstName + "and age > " + age;  
    5.         return hibernateTemplateMysql.execute(new HibernateCallback() {  
    6.             @Override  
    7.             public Object doInHibernate(Session session) throws HibernateException {  
    8.                 String hql = "from User where name like '?' and age > ?";  
    9.                 Query query = session.createQuery(hql);  
    10.                 query.setParameter(0, firstName+"");  
    11.                 query.setParameter(1, age);  
    12.                 return query.uniqueResult();  
    13.             }  
    14.         });  
    15.     }  
    16. }  
        然而,如果我们用Spring Data JPA呢:
    [java] view plain copy
     
    1.   
    [java] view plain copy
     
    1. public interface UserDao extends JpaRepository<User, Serializable>{  
    2.     List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);  
    3. }  

        对,就这样,已经没有了,连实现都不需要写的!service直接调用UserDao.findByNameLikeAndAgeGreaterThan(firstName+"%",age)即可。

    所以,spring data jpa可以极大的简化JPA的写法,可以在几乎不用写具体代码的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
     
    Spring Data JPA有什么
    主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念:
    1:Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。
    2:CrudRepository :是Repository的子接口,提供CRUD的功能
    3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能
    4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
    5:JpaSpecificationExecutor:用来做负责查询的接口
    6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可
    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jewelry008/article/details/76359516
  • 相关阅读:
    Android之绚丽的图片游览效果--有点像W7效果,透明的倒影,层叠的图片,渐变的颜色透明度
    小程序自定义弹出框
    从零学React Native之04自定义对话框
    ajax的content-download时间过慢问题的解决与思考
    小程序
    使用自定义视图的AlertDialog
    Android浮动按钮
    android 实现微信分享多张图片的功能
    AndroidUI多线程网络请求更新导致BUG
    ==比较时的坑
  • 原文地址:https://www.cnblogs.com/yaowen/p/8880383.html
Copyright © 2011-2022 走看看