Spring Data JPA介绍

可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的JPA技术实现,引用JPQL(Java Persistence Query Language)查询语言,属于Spring整个生态体系的一部分。随着Spring Boot和Spring Cloud在市场上的流行,Spring Data JPA也逐渐进入大家的视野,它们组成有机的整体,使用起来比较方便,加快了开发的效率,使开发者不需要关心和配置更多的东西,完全可以沉浸在Spring的完整生态标准实现下。JPA上手简单,开发效率高,对对象的支持比较好,又有很大的灵活性,市场的认可度越来越高。

JPA是Java Persistence API的简称,中文名为Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

JPA包括以下3方面的内容:

(1)一套API标准。在javax.persistence的包下面,用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从烦琐的JDBC和SQL代码中解脱出来。

(2)面向对象的查询语言:Java Persistence QueryLanguage(JPQL)。这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合

(3)ORM(object/relational metadata)元数据的映射。JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。

Spring Data介绍

Spring  Data项目是从2010年发展起来的,从创立之初SpringData就想提供一个大家熟悉的、一致的、基于Spring的数据访问编程模型,同时仍然保留底层数据存储的特殊特性。它可以轻松地让开发者使用数据访问技术,包括关系数据库、非关系数据库(NoSQL)和基于云的数据服务。

Spring Data Common是Spring Data所有模块的公用部分,该项目提供跨Spring数据项目的共享基础设施。它包含了技术中立的库接口以及一个坚持java类的元数据模型。

Spring Data不仅对传统的数据库访问技术JDBC、Hibernate、JDO、TopLick、JPA、Mybitas做了很好的支持、扩展、抽象、提供方便的API,还对NoSQL等非关系数据做了很好的支持,包括MongoDB、Redis、Apache Solr等

Spring Data的子项目

Spring Data操作的主要特性

Spring Data项目旨在为大家提供一种通用的编码模式。数据访问对象实现了对物理数据层的抽象,为编写查询方法提供了方便。通过对象映射,实现域对象和持续化存储之间的转换,而模板提供的是对底层存储实体的访问实现。如图1-4所示。操作上主要有如下特征:

提供模板操作,如Spring Data Redis和Spring Data Riak。

强大的Repository和定制的数据存储对象的抽象映射。

对数据访问对象的支持(Auting等)。

Spring Data JPA的主要类及结构图

七个Repository接口:

1.Repository

2.CrudRepository

3.PagingAndSortingRepository

4.QueryByExampleExecutor

5.JpaRepository

6.JpaSpeccificationExecutor

7.QueryDslPredicateExecutor

两个实现类:

1.SimpleJpaRepository

2.QueryDslJpaRepository

关系结构图如图1-5所示。

MySQL的快速开发实例

1.创建表

CREATE TABLE `user` (

`id` int(11) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`email` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.创建springboot项目

配置jpa、mysql、web依赖

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

org.projectlombok

lombok

3.配置application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/db_jpa?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

spring.datasource.username=root

spring.datasource.password=root

4.创建实体类

@Entity

@Data

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

private String name;

private String email;

}

5.创建Repository

public interface UserRepository extends CrudRepository{

}

6.创建Controller

@RestController

public class UserController {

@Autowired

private UserRepository userRepository;

@GetMapping("/add")

public User addUser(@RequestParam String name,@RequestParam String email){

User user=new User();

user.setName(name);

user.setEmail(email);

return userRepository.save(user);

}

@GetMapping("/get")

public Iterable getAll(){

return userRepository.findAll();

}

}

7.运行main方法

提示:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dia

问题:原来是Hibernate SQL方言没有设置导致的,在properties文件中增加下面这行

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

java data jpa_Spring Data JPA(一)简介相关推荐

  1. java bean join_spring data jpa 关联join查询出自定义实体java bean的坑

    repository接口如下: package cn.detao.repository; import org.springframework.data.jpa.repository.JpaRepos ...

  2. Data Source与数据库连接池简介 JDBC简介(八)

    DataSource是作为DriverManager的替代品而推出的,DataSource 对象是获取连接的首选方法. 起源 为何放弃DriverManager DriverManager负责管理驱动 ...

  3. java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value

    mysql 报这个异常:java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value update 表名 set c ...

  4. 一步步学习 Spring Data 系列之JPA(一)

    2019独角兽企业重金招聘Python工程师标准>>> 大概有半年多没有写博客了,主要是最近忙于工作,也没来得及与大家分享技术.当然现在的技术大多都有人写其博客分享了,也找不到合适写 ...

  5. java 省市区数据data

    2019独角兽企业重金招聘Python工程师标准>>> java 省市区数据data CREATE TABLE hat_province ( sid number(11) NOT N ...

  6. Java常见问题之Data too long for column 'orResponse' at row 1

    本文介绍了出现Data too long for column 'trRequest' at row 1问题的解决方式 一.bug提示如下 Error Code: 1406. Data too lon ...

  7. nested exception is java.sql.SQLException: Data truncated for column 'PassWord' at row 72

    tomcat启动没有错误,进入登录界面发现登不进去,出现错误: 2016-08-17 14:52:44 -43568 [http-8080-4] DEBUG   - ==>  Preparing ...

  8. JAVA插入数据库时java.sql.DataTruncation: Data truncation

    今天在做SQL2000的数据库数据交换下,报java.sql.DataTruncation: Data truncation,经过调试 最后才明白.其实就是表的数据结构大小问题   A 表 定义的字段 ...

  9. Cause: java.sql.SQLException: Data truncated for column 'comment' at row 1

    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is ...

最新文章

  1. 应用程序基础知识:activity和intent——Android开发秘籍
  2. OpenStack-MitakaCentos7.2双节点搭建--(五)Neutron服务
  3. ADO.NET入门教程(三) 连接字符串,你小觑了吗?
  4. OpenCV角点检测之Harris角点检测
  5. python 内置模块 增加_模块的内置方法--Python提高班
  6. 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
  7. OpenCV中基本数据结构(8)_Complex
  8. 【图像处理】MATLAB:几何变换与图像配准
  9. [转载] python的变量和C++的变量有什么区别
  10. Scrapyd API的安装
  11. es java 实现should must filter组合查询
  12. 黑盒测试白盒测试用例设计
  13. STC12C5A60S2软件模式SPI读取DS1302时钟实时显示在1602
  14. Python3.x爬虫下载网页图片
  15. jenkins构建Protractor项目报错解决
  16. python调用ssh-paramikoparamiko-expect
  17. 机器学习之字典学习DictionaryLearning
  18. 卡特兰(Catalan)数
  19. 源码编译、安装gcc 7
  20. Linux使用aircrack-ng破解WIFI(wpa/wpa2)密码

热门文章

  1. matlab2008报错,simulink的.mdl的文件在matlab2008a中打开报错,高手指点下
  2. 平板电脑可以插u盘吗_电视TV盒子安装app的六个方法,u盘/电脑/手机都可以安装...
  3. hbase 导入mysql_HBase导入SQL Server数据库数据
  4. 怎么实现hover_web前端CSS实现一个粒子动效的按钮
  5. linux免密登录_Linux SSH免密钥登录总结
  6. vb如何测试连接mysql_VB怎么连接访问Access数据库?
  7. yytextview多种格式_iOS YYText的使用笔记一(YYTextView图文编辑器)
  8. QString转char*的问题
  9. rt5350 中断处理分析
  10. 深入浅出单实例Singleton设计模式