spring data(JPA/REST/REDIS/ES)

https://spring.io/projects/spring-data

JPA (java persistence api)

  • JPA是一种ORM规范
  • spring data jpajpa的抽象层
  • ORM框架提供JPA具体实现,如: hibernate,EclipseLink,open jpa,mybatis(不完整的orm框架),mybatisPlus相当于补全了mybatis ORM功能
    在这里插入图片描述

Spring Data JPA

spring boot项目使用

依赖

        <!--spring-data-jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

配置

spring:
  datasource:
    type: xxx
    username: test
    password: test
    driver-class-name: xxx
  jpa:
    hibernate:
      ddl-auto: update #ddl策略
    show-sql: true  #日志中显示sql语句

注解使用

1. entity实体类

//表明是实体类
@Entity
//实体类对应的表
@Table(name = "表名")
//实体类增删改的时候监听,为创建人/创建时间等基础字段赋值
@EntityListeners
public class JpaUser {
    // 主键
    @Id
    // 对应数据列
    @Column(name = "ID")
    // 生成方式
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_sequence")
    // 序列名
    @SequenceGenerator(sequenceName = "USER_sequence", name = "USER_sequence", allocationSize = 1)
    private Long id;
}

2. Repository层

// 继承JpaRepository
public interface xxxRepository extends JpaRepository<JpaUser, Long> {
}

3. service 层

@Service
public class xxxService {
    @Resource
    private xxxRepository xxxRepository;

    public JpaUser insertUser(JpaUser user) {
        return xxxRepository.save(user);
    }

    public void deleteUser(Long id) {
        xxxRepository.deleteById(id);
    }

    public JpaUser updateUser(JpaUser user) {
        return xxxRepository.save(user);
    }

    public List<JpaUser> findAllUser() {
        return xxxRepository.findAll();
    }

    public JpaUser findUserById(Long id) {
        return xxxRepository.findById(id).orElse(null);
    }
}

4. Controller层

Spring Data REST

Spring Data REST 的适用场景:

  1. 增删改查的简单业务逻辑
  2. 前端数据和表结构内容对应
  3. 不含有复杂的关联查询

在Spring Data JPA基础上使用

spring boot项目使用

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
  </dependency>

Repository层

@RepositoryRestResource(path="user")
public interface xxxRepository extends JpaRepository<JpaUser, Long> {
}

http请求

// 查询
GET host:api/user
GET host:api/user/{id}
GET host:api/user?page=1&size=10&sort=age,desc

// 新增
POST host:api/user
raw 对象json

//更新
POST host:api/user
raw 带id的对象json

//删除
DELETE host:api/user/{id}

Spring Data Rest Events 提供了AOP方式的开发,定义了10种不同事件。
资源保存前 @HandleBeforeCreate
资源保存后 @HandleAfterCreate
资源更新前 @HandleBeforeSave
资源更新后 @HandleAfterSave
资源删除前 @HandleBeforeDelete
资源删除后 @HandleAfterDelete
关系创建前 @HandleBeforeLinkSave
关系创建后 @HandleAfterLinkSave
关系删除前 @HandleBeforeLinkDelete
关系删除后 @HandleAfterLinkDelete

Spring Data Redis

Spring Data Elasticsearch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值