java data jpa_Spring Data JPA(一)简介
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(一)简介相关推荐
- java bean join_spring data jpa 关联join查询出自定义实体java bean的坑
repository接口如下: package cn.detao.repository; import org.springframework.data.jpa.repository.JpaRepos ...
- Data Source与数据库连接池简介 JDBC简介(八)
DataSource是作为DriverManager的替代品而推出的,DataSource 对象是获取连接的首选方法. 起源 为何放弃DriverManager DriverManager负责管理驱动 ...
- java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value
mysql 报这个异常:java.sql.SQLException: Data truncation: Truncated incorrect DOUBLE value update 表名 set c ...
- 一步步学习 Spring Data 系列之JPA(一)
2019独角兽企业重金招聘Python工程师标准>>> 大概有半年多没有写博客了,主要是最近忙于工作,也没来得及与大家分享技术.当然现在的技术大多都有人写其博客分享了,也找不到合适写 ...
- java 省市区数据data
2019独角兽企业重金招聘Python工程师标准>>> java 省市区数据data CREATE TABLE hat_province ( sid number(11) NOT N ...
- 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 ...
- 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 ...
- JAVA插入数据库时java.sql.DataTruncation: Data truncation
今天在做SQL2000的数据库数据交换下,报java.sql.DataTruncation: Data truncation,经过调试 最后才明白.其实就是表的数据结构大小问题 A 表 定义的字段 ...
- Cause: java.sql.SQLException: Data truncated for column 'comment' at row 1
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is ...
最新文章
- 应用程序基础知识:activity和intent——Android开发秘籍
- OpenStack-MitakaCentos7.2双节点搭建--(五)Neutron服务
- ADO.NET入门教程(三) 连接字符串,你小觑了吗?
- OpenCV角点检测之Harris角点检测
- python 内置模块 增加_模块的内置方法--Python提高班
- 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
- OpenCV中基本数据结构(8)_Complex
- 【图像处理】MATLAB:几何变换与图像配准
- [转载] python的变量和C++的变量有什么区别
- Scrapyd API的安装
- es java 实现should must filter组合查询
- 黑盒测试白盒测试用例设计
- STC12C5A60S2软件模式SPI读取DS1302时钟实时显示在1602
- Python3.x爬虫下载网页图片
- jenkins构建Protractor项目报错解决
- python调用ssh-paramikoparamiko-expect
- 机器学习之字典学习DictionaryLearning
- 卡特兰(Catalan)数
- 源码编译、安装gcc 7
- Linux使用aircrack-ng破解WIFI(wpa/wpa2)密码
热门文章
- matlab2008报错,simulink的.mdl的文件在matlab2008a中打开报错,高手指点下
- 平板电脑可以插u盘吗_电视TV盒子安装app的六个方法,u盘/电脑/手机都可以安装...
- hbase 导入mysql_HBase导入SQL Server数据库数据
- 怎么实现hover_web前端CSS实现一个粒子动效的按钮
- linux免密登录_Linux SSH免密钥登录总结
- vb如何测试连接mysql_VB怎么连接访问Access数据库?
- yytextview多种格式_iOS YYText的使用笔记一(YYTextView图文编辑器)
- QString转char*的问题
- rt5350 中断处理分析
- 深入浅出单实例Singleton设计模式