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注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。

ec91aca4cde73b0067f5392ad91951c1.png

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的子项目

663e3dc824029a1b6b7f46f13ab850c7.png

Spring Data操作的主要特性

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

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

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

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

77143eb31ef97872b40ff4353940c0df.png

Spring Data JPA的主要类及结构图

七个Repository接口:

1.Repository

2.CrudRepository

3.PagingAndSortingRepository

4.QueryByExampleExecutor

5.JpaRepository

6.JpaSpeccificationExecutor

7.QueryDslPredicateExecutor

两个实现类:

1.SimpleJpaRepository

2.QueryDslJpaRepository

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

e1c23be959baaf0f2e4e4ad6bc7fe604.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CodeForces - 438D】The Child and Sequence(线段树区间取模操作)

题干: At the childrens day, the child came to Pickss house, and messed his house up. Picks was angry at him. A lot of important things were lost, in particular the favorite sequence of Picks. Fortunately, Picks remembers how to repair the sequ…

java 自定义xml_6.1 如何在spring中自定义xml标签

dubbo自定义了很多xml标签,例如,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。一 编写模型类1 packagecom.hulk.testdubbo.model;23 public classHero {4 privateString name;5 private intage;67 publicString ge…

【POJ - 3723】Conscription (最大生成树,最小生成树MST变形)

题干: Windy has a country, and he wants to build an army to protect his country. He has picked up N girls and M boys and wants to collect them to be his soldiers. To collect a soldier without any privilege, he must pay 10000 RMB. There are some…

java 监听本地端口_Java-在本地端口上侦听RTP数据包

因此,我目前正在开发一个客户端应用程序,该应用程序在端口5004上侦听RTP数据包.由于可能有多个服务器发送RTP数据包,因此我无法使用套接字连接到特定的远程主机.相反,我尝试了以下方法来侦听本地端口:Socket socket new Socket("127.0.0.1", 5004);Socke…

【FZU - 2254】英语考试(最小生成树,思维,建图)

题干: 在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习。 这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m。 YellowSatr准备采用联想记忆法来背诵这n个单词: 1、如果Ye…

java 模块设计模式_Java9模块化学习笔记二之模块设计模式

模块设计的原则:1、防止出现编译时循环依赖(主要是编译器不支持),但运行时是允许循环依赖的,比如GUI应用2、明确模块的边界几种模块设计:API模块,聚合模块(比如java.base)可选依赖两种方式:1、可选的编译时依赖(类似于maven的provided scope)…

【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)

题干: Clarke is a patient with multiple personality disorder. One day he turned into a learner of graph theory. He learned some algorithms of minimum spanning tree. Then he had a good idea, he wanted to find the maximum spanning tree with bit …

java爬虫获取div内容_Java爬虫-简单解析网页内容

获取百度新闻中所有的中国新闻的标题时间来源1 获取网页2 public static String getContent(String str) throwsClientProtocolException, IOException {3 CloseableHttpClient closeableHttpClientHttpClients.createDefault(); //创建实例4 HttpGet httpGetnewHttpGet(str);5…

【HDU - 4635】Strongly connected(缩点,新图性质,建图,Tarjan求强连通分量)

题干: Give a simple directed graph with N nodes and M edges. Please tell me the maximum number of the edges you can add that the graph is still a simple directed graph. Also, after you add these edges, this graph must NOT be strongly connected.…

python bind sock_python 在bind端口之后创建的socket如果不关闭的话会被回收吗?

在进行tcpsocket编程的时候,遇到一个问题:我创建一个Asocket,在进行bind之后,这个socket为 在进行tcpsocket编程的时候,遇到一个问题: 我创建一个Asocket,在进行bind之后,这个socket…

【ZOJ - 2955】Interesting Dart Game(背包,结论,裴蜀定理,数论)

题干: Recently, Dearboy buys a dart for his dormitory, but neither Dearboy nor his roommate knows how to play it. So they decide to make a new rule in the dormitory, which goes as follows: Given a number N, the person whose scores accumulate e…

接口测试 java_接口测试--Java

1:interface :定义接口接口用于 模块与模块之间的连接 或者系统与系统间的连接2:软件系统UI层:程序的界面,主要为用户提供交互和操作--查看,输入,点击,等。业务逻辑层:进行复杂的业…

【ZOJ - 2949】Coins of Luck (概率dp,期望)

题干: 给你两种泡面 各N包,然后你扔硬币,正面朝上吃第一种,反面呢 吃第二种,有任意一种吃完时 就不需要抛硬币了,求停止抛硬币的期望。 Sample Input 2 1 2Sample Output 1.00 2.50 解题报告&#xff…

java perl_在Java中调用Perl脚本

有两种方法,第一种是直接 Runtime.getRuntime().exec("...");这里推荐第二种,可以得到输出和返回值:源代码如下:import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public c…

*【HDU - 6201】transaction transaction transaction(树形dp 或 spfa最长路 或 网络流)

题干: 题目大意: 给出一棵n个顶点的树,每个点有一个权值,代表商品的售价,树上每一条边上也有一个权值,代表从这条边经过所需要的花费。现在需要你在树上选择两个点,一个作为买入商品的点&#…

java 手写签名_Android 自定义View手写签名并保存图片

GIF压缩有问题,运行很顺滑!!!1.自定义View——支持设置画笔颜色,画笔宽度,画板颜色,清除画板,检查是否有签名,保存画板图片(复制粘贴可直接使用)/*** Created by YyyyQ o…

【2019第十届蓝桥杯省赛C/C++B组题解】(非官方题解)

A。 数数题。 答案:490 B。 26进制模拟。 答案:BYQ C。 类似fib数列求值,递推一下就好。 答案:4659 D。 注意两个坑点,一个是正整数,所以枚举要从1开始。第二个坑点是互不相同的,为了达到这…

java对象模型 指令_深入理解多线程(二)—— Java的对象模型

上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现。后面几篇文章会从JVM源码的角度更加深入,层层剥开synchronized的面纱。在…

【POJ - 1651】Multiplication Puzzle(区间dp)

题干: The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and scores the number of points equal to the product of the number on the card taken …

java hive demo_java 操作hive通过jdbc

直接代码吧:记得要开启hive jdbc服务hive --service hiveserverpackage hive;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class HiveDemo {static{//注册jdbc驱动try {Class.forName(&…