码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Data JPA中踩过的坑

时间:2019-08-25 14:26:06      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:mil   import   用法   port   list   back   sans   framework   表结构   

说老实话,Spring Data JPA很好用,上次使用还是2013年,当时只是完成Java Bean和数据库中表的映射。

最近想起来用Spring Data JPA的起因是手头有一个项目,源代码是用原生SQL+JDBC实现的,在第一次部署时要初始化数据库,还hardcode了很多数据库配置参数。正好最近有空,就打算用Spring Boot Data JPA(spring-boot-starter-data-jpa)改造一下,仔细看了一下源代码发现和几年前已经天差地别,如果你的业务逻辑不是特别复杂或者表结构设计合理,一行真正SQL逻辑实现都不要写,良心啊,真是为我这样的懒人着想啊。

首先开始写Repository,常见的用法有两种,一个是写一个接口继承JpaRepository,代码如下:

package com.company.inventory.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import comcompany.inventory.model.Device;
public interface DeviceRepository extends JpaRepository<Device, Long> {
    List<Device> findBySnOrderByGmtCreatedDesc(String sn);
}

另外一个是继承CrudRepository,代码如下:

package com.company.inventory.repository;

import java.util.List;
import org.springframework.data.repository.CrudRepository;
import comcompany.inventory.model.Device;
public interface DeviceRepository extends CrudRepository<Device, Long> {
    List<Device> findBySnOrderByGmtCreatedDesc(String sn);
}

JpaRepository和CrudRepository关系如下:

public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> 
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> 

public interface CrudRepository<T, ID> extends Repository<T, ID>

从上面的关系就能看出JpaRepository除了能做CrudRepository能做的所有事外,还多了分页和排序功能以及QueryByExampleExecutor提供的QueryByExample功能。但是JpaRepository也和JPA持久化技术进行了绑定。http://jtuts.com/2014/08/26/difference-between-crudrepository-and-jparepository-in-spring-data-jpa/

所以建议尽量使用CrudRepository或者PagingAndSortingRepository

 

Spring Data JPA中踩过的坑

标签:mil   import   用法   port   list   back   sans   framework   表结构   

原文地址:https://www.cnblogs.com/siodoon/p/11407666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!