Spring Data JPA 实战(一)-体系结构及基本配置

Spring Data JPA 实战(一)

一.Spring DataJPA介绍

使用Spring Data Repository将程序员从大量重复繁杂的数据库层操作中解放啊出来。

二.Repository:遍历的数据访问层

1.  Repository的体系结构

 

2.  Repository接口介绍

2.1 Repository

Spring-Data-Commons包提供了Repository接口,该接口是一个标识接口,也是Spring dataRepository的核心接口,这个接口需要将领域类以及领域类ID的类型做为参数,主要的作用如下:

1.      能够让spring的基础设置识别出用户定义的所有Spring Data Repository。

2.      大幅简化了各种持久化存储的持久层实现

3.      捕获托管的领域类和实体的ID类型

packageorg.springframework.data.repository;

import java.io.Serializable;

public abstract interface Repository<T,IDextendsSerializable> {

}

2.2  CrudRepository

CrudRepository继承了Repository接口,并声明了以下能力:

(1)保存给定的实体。

(2)返回指定ID的实体。

(3)返回全部实体。

(4)返回实体的总数。

(5)删除指定的实体。

(6)判断给定的ID是否存在。

我们可以通过继承CrudRepository接口去扩展我们需要的特性及服务。

CrudRepository源码如下:

@NoRepositoryBean

public abstract interfaceCrudRepository<T, ID extends Serializable> extends Repository<T,ID> {

         publicabstract <S extends T> S save(S paramS);

         publicabstract <S extends T> Iterable<S> save(Iterable<S>paramIterable);

         publicabstract T findOne(ID paramID);

         publicabstract boolean exists(ID paramID);

         publicabstract Iterable<T> findAll();

         publicabstract Iterable<T> findAll(Iterable<ID> paramIterable);

         publicabstract long count();

         publicabstract void delete(ID paramID);

         publicabstract void delete(T paramT);

         publicabstract void delete(Iterable<? extends T> paramIterable);

         publicabstract void deleteAll();

}

2.3  PagingAndSortingRepository

PagingAndSortingRepository 继承了CrudRepository接口,提供了分页与排序的功能。

例如:如果我们想查询第二页的20行的用户数据,可以通过如下方式实现:

PagingAndSortingRepository<User,Long> repository = // … get access to a bean

Page<User> users =repository.findAll(new PageRequest(1, 20));

PagingAndSortingRepository源码如下:

public abstractinterfacePagingAndSortingRepository<T, IDextends Serializable>extends CrudRepository<T,ID> {

    public abstractIterable<T> findAll(Sort paramSort);

    public abstract Page<T>findAll(Pageable paramPageable);

}

2.4  JpaRepository

JpaRepository接口是Spring Data Jpa对Spring DataRepository的实现。该接口继承自PagingAndSortingRepository,并进行了扩展。

JpaRepository源码如下:

@NoRepositoryBean

publicabstract interface JpaRepository<T, ID extends Serializable> extendsPagingAndSortingRepository<T, ID> {

        public abstract List<T> findAll();

        public abstract List<T>findAll(Sort paramSort);

        public abstract List<T>findAll(Iterable<ID> paramIterable);

        public abstract <S extends T>List<S> save(Iterable<S> paramIterable);

        public abstract void flush();

        public abstract <S extends T> SsaveAndFlush(S paramS);

        public abstract voiddeleteInBatch(Iterable<T> paramIterable);

        public abstract void deleteAllInBatch();

        public abstract T getOne(ID paramID);

}

3.  Repository配置

<jpa:repositories>是spring datajpa的重要配置:启用扫描并自动创建代理。

<jpa:repositories>

    <!-- Spring Data Jpa配置 -->

    <jpa:repositoriesbase-package="com.yyjz"

        transaction-manager-ref="transactionManager"

        entity-manager-factory-ref="entityManagerFactory"<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道化简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值