`

63.JPA/Hibernate/Spring Data概念【从零开始学Spring Boot】

阅读更多

视频&交流平台

à SpringBoot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

 

【从零开始学习Spirng Boot—常见异常汇总】

 

       事情的起源,无意当中在一个群里看到这么一句描述:有人么?默默的问一句,现在开发用mybatis还是hibernate还是jpa? 然后大家就进行各种回答,但是没有有质疑这句话描述的合理性,个人觉得需要清楚概念的,在这里mybatis大家肯定是没有什么疑问,我们把上面那句话更改下,方便我们抛出一些点出来,去掉mybatis修改为:“现在开发是使用hibernate还是 jpa? 那么在这里的话,我们就要清楚hibernate/jpa/spring data/spring data jpa到底怎么一个关系?

 

 

什么是JPA?

       JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。百度百科JPA

       在上面只是一个JPA的定义,我们看看另外一段更能看出是什么的描述:

       JPA(Java Persistence API)Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。

       在这段话就比较清晰了,这里有一个关键词“持久化规范”。我们可以拆成两部分进行解读“持久化”、“规范”。所谓的持久化是将程序数据在瞬时数据(比如内存中的数据)转换为持久数据(比如:保存到数据库中,磁盘文件)。这个个人粗糙的描述,看看专业的描述,如下:

       持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在的数据库中,或者存储在磁盘文件中、XML数据文件中等等。

       持久化是将程序数据在持久状态和瞬时状态间转换的机制。

       JDBC就是一种持久化机制。文件IO也是一种持久化机制。

       好了,上面已经描述很清楚了,我们在说说“规范”: 所谓的规范意指明文规定或约定俗成的标准。如:道德规范、技术规范,公司管理规范。

       那么“持久化规范”就是Sun针对持久化这一层操作指定的规范,如果没有指定JPA规范,那么新起的框架就随意按照自己的标准来了,那我们开发者的世界就玩完了,我们就没法把我们的经历全部集中在我们的业务层上,而是在想我们进行兼容了,这种情况有点像Android开发,Android本身有官方的SDK,但是由于SDK过于开源了,结果导致很多厂商基于SDK二次开发,但是开发完兼容性就不是很好,最好的例子就是Android的头像上传,就是一件很烦人的事情。好了,JPA就唠叨到这里。

什么是Hibernate?

       这里引用百度百科的话hibernate

       Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSPWeb应用中使用,最具革命意义的是,Hibernate可以在应用EJBJ2EE架构中取代CMP,完成数据持久化的重任。

       在上面这段描述中抓住核心的一句话就可以了“是一个全自动的ORM框架”。那么是ORM? ORM是对象关系映射的意思,英语:Object Relational Mapping简称ORM,是一种程序技术,用于实现面向对象编程语言里不同系统类型的系统之间的数据转换。好了,更多的概念需要自己去挖掘,这里只是抛装引玉下。

 

什么是Spring Data?

       Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。此外,它还支持基于关系型数据库的数据服务,如Oracle RAC等。对于拥有海量数据的项目,可以用Spring Data来简化项目的开发,就如Spring FrameworkJDBCORM的支持一样,Spring Data会让数据的访问变得更加方便。

       在上面这段描述中我觉得核心的就是“Spring Data是用于简化数据库访问,支持云服务的开源框架”。所以Spring Data本身就是一个开源的框架。

 

什么是Spring Data JPA?

       我们先看一个描述:

Spring Data JPA能干什么

可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。

       首先我们需要清楚的是Spring Data是一个开源框架,在这个框架中Spring Data JPA只是这个框架中的一个模块,所以名称才叫Spring Data JPA。如果单独使用JPA开发,你会发现这个代码量和使用JDBC开发一样有点烦人,所以Spring Data JPA的出现就是为了简化JPA的写法,让你只需要编写一个接口继承一个类就能实现CRUD操作了。

 

JPA/Hibernate 关系?

       我们先看下别人的描述:

Jpa是一种规范,而Hibernate是它的一种实现。除了Hibernate,还有EclipseLink(曾经的toplink)OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实现而不必改动太多代码。

       从上面这个描述,我们能就是能看出: JPA定义了一个规范,Hibernate是其中的一种实现方式可以,所以我们可以说:HibernateJPA的一种实现方式。但是这么说就有点欠妥当了:开发是使用hibernate还是 jpa。如果你回答使用JPA的话,那么你根本做不了什么事情,因为你需要使用它具体的一种实现方式,比如:Hibernate,EclipseLink,toplink。如果回答说是使用Hibernate的话,还勉强说的过去,但是在Hibernate中也有JPA的影子。但是这里不要造成一个误解,hibernate一定依赖JPA什么之类的,JPA现在只是Hibernate功能的一个子集。Hibernate 3.2开始,开始兼容JPA的。Hibernate3.2获得了Sun TCK JPA(Java  Persistence API) 兼容认证。

       那么我们在描述的时候,别人问你持久化具体使用了什么,我们可以说:使用了基于Hibernate实现的JPA,或者是Hibernate JPA,那么加上spring data的,我们一般都简化说:spring data jpa,一般默认的就是使用了hibernate进行实现,现在网上这方面的资料也比较多,可能就约定俗成了。当然你要别人清楚的话,可以自己在进行补充下。

       好了,这个困惑就到这里,在这里就是博主个人的一些见解,有什么个别的见解都可以在评论中探讨,如有错误之处,请指正。

 

       这篇也是博主花了一些心血去梳理的,请大家都都支持。

 Spring Boot 系列博客】

视频&交流平台

à Spring Boot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

历史章节

 

第一章 快速开始

1、Spring Boot之Hello World

2、Spring Boot之Hello World访问404

 

第二章 Spring Boot之JSON

1、spring boot返回json数据

2、Spring Boot完美使用FastJson解析JSON数据

 

第三章 Spring Boot热部署

1、Spring Boot热部署(springloader)

2、springboot + devtools(热部署)

 

第四章 Spring Boot数据库

1、Spring Boot JPA/Hibernate/Spring Data概念

2、Spring Boot JPA-Hibernate

3、Spring Boot Spring Data JPA介绍

4、Spring Boot JdbcTemplate

5、Spring Boot集成MyBatis

 

第五章 web开发

1、全局异常捕捉

2、配置server信息

3、spring boot使用thymeleaf

4、Spring Boot 使用freemarker

5、Spring Boot添加JSP支持

 

第六章 定时任务

1、Spring Boot定时任务

2、Spring Boot 定时任务升级篇(动态修改cron参数)

3、Spring Boot 定时任务升级篇(动态添加修改删除定时任务)

4、Spring Boot 定时任务升级篇(集群/分布式下的定时任务说明)

5、Spring Boot Quartz介绍

6、Spring Boot Quartz在Java Project中使用

7、Spring Boot 集成Quartz普通使用

8、Spring Boot 集成Quartz升级版

9、Spring Boot 集成Quartz二次升级版

10、Spring Boot 集成Quartz-Job如何自动注入Spring容器托管的对象

 

第七章 Spring Boot MyBatis升级篇

1、Spring Boot MyBatis升级篇-注解

2、Spring Boot MyBatis升级篇-注解-自增ID

3、Spring Boot MyBatis升级篇-注解-增删改查

4、Spring Boot MyBatis升级篇-注解-分页查询

5、Spring Boot MyBatis升级篇-注解-分页PageHelper不生效

6、Spring Boot MyBatis升级篇-注解- mybatic insert异常:BindingException: Parameter 'name' not found

7、Spring Boot MyBatis升级篇-注解- #和$符号特别篇

8、Spring Boot MyBatis升级篇-注解-@Result

9、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>

10、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider

11、Spring Boot MyBatis升级篇-注解-动态SQL-参数问题

12、Spring Boot MyBatis升级篇-注解-特别篇:@MapperScan和@Mapper

13、Spring Boot MyBatis升级篇-XML

14、Spring Boot MyBatis升级篇-XML-自增ID

15、Spring Boot MyBatis升级篇-XML-增删改查

16、Spring Boot MyBatis升级篇-XML-分页查询

17、Spring Boot MyBatis升级篇-XML-分页PageHelper不生效

18、Spring Boot MyBatis升级篇-XML-动态SQL(if test)

19、Spring Boot MyBatis升级篇-XML-注解-初尝试

20、Spring Boot MyBatis升级篇- pagehelper替换为pagehelper-spring-boot-starter

 

第八章 Spring Boot 知识点1

1、Spring Boot 拦截器HandlerInterceptor

2、Spring Boot启动加载数据CommandLineRunner

3、Spring Boot环境变量读取和属性对象的绑定

4、Spring Boot使用自定义的properties

5、Spring Boot使用自定义的properties

6、Spring Boot使用@SpringBootApplication

7、Spring Boot 监控和管理生产环境

 

第十章 Spring Boot 打包部署

1、Spring Boot打包部署((提供Linux的sh文件))

 

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

 

3、Spring Boot日志-log4j2

 

更多查看博客: http://412887952-qq-com.iteye.com/

 

分享到:
评论
2 楼 林祥纤 2017-03-31  
wwwsun378 写道
点赞啊啊啊啊啊啊啊啊啊啊啊啊


谢谢。
1 楼 wwwsun378 2017-03-30  
点赞啊啊啊啊啊啊啊啊啊啊啊啊

相关推荐

    7. JPA - Hibernate【从零开始学Spring Boot】

    作为从零开始学习Spring Boot的一部分,理解如何有效地利用这些技术进行数据库操作至关重要。 首先,JPA是Java平台上的一个标准,用于管理关系数据库中的对象持久化。它为开发人员提供了一种统一的API,简化了...

    8. 使用JPA保存数据【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列中,我们将探讨如何使用Java Persistence API (JPA) 来保存数据。JPA是Java平台上的一个标准,它为对象关系映射(ORM)提供了一种规范,使得开发人员可以使用Java对象来操作数据库...

    spring-boot实战PDF 完整版和随书源码.7z

    《Spring Boot实战》是一本深度剖析Spring Boot框架的实践指南,旨在帮助开发者快速掌握Spring Boot的核心概念和技术。这本书深入浅出地介绍了如何使用Spring Boot构建高效、简洁的Java应用程序。随书源码提供了丰富...

    Springboot入门到精通完整版.pdf

    在学习Spring Boot时,首先需要了解其基本概念和架构,包括起步依赖(Starter Dependency)、自动配置(Auto Configuration)和Actuator(用于健康检查和应用监控)。然后,深入学习如何创建第一个Spring Boot应用,...

    详尽的Spring2.0学习提纲

    1. 创建Spring项目:从零开始构建一个简单的Spring MVC应用,涉及配置、控制器、视图和数据库访问。 2. 高级特性实践:探索Spring Security、Spring WebSocket、Spring Boot等进阶主题,提升项目开发能力。 通过...

    Spring boot基础demo

    Spring Boot是Java开发中的一个流行框架,用于简化Spring应用程序的创建和配置过程。它通过提供预配置的starter pom或gradle...这个demo是一个实践型的学习资源,帮助开发者从零开始接触并掌握Spring Boot的基础知识。

    干净可用spring-boot的项目

    这大大节省了开发者从零开始构建新项目的时间,提高了开发效率。 下面我们将深入探讨Spring Boot的核心特性和主要知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过“起步依赖”管理依赖关系,...

    使用GORM构建Spring Boot应用程序 Grails指南_ Grails框架.pdf

    如果你想要从零开始,可以使用Spring Initializr创建一个新的Spring Boot项目,选择Gradle作为构建工具,使用Groovy语言,并且指定Spring Boot的版本为1.5.6.RELEASE。同时,确保添加Web和H2数据库依赖项。 接下来...

    spring boot中文参考指南

    综上所述,"spring boot中文参考指南"这份文档将涵盖以上各个方面的内容,指导读者从零开始学习Spring Boot,直至掌握构建微服务的关键技能。这份PDF资源对于Spring Boot初学者或是希望提升微服务开发能力的开发者来...

    spring boot入门--创建项目到数据库连接

    在这个“spring boot入门--创建项目到数据库连接”的教程中,我们将深入探讨如何从零开始创建一个 Spring Boot 项目,并实现与数据库的连接。 首先,我们需要理解 Spring Boot 的核心特性。它内置了一个内嵌的...

    Spring Boot 2精髓带书签pdf打包送张志君视频教程

    在2017年的SpringBoot视频教程中,你可能会学到如何从零开始搭建Spring Boot项目,理解自动配置的工作原理,如何使用Spring Data JPA进行数据库操作,以及如何利用Actuator进行应用监控。同时,他还可能分享了最佳...

    spring 小项目

    在这个"spring 小项目"中,你可能正在经历从零开始构建一个基于Spring Boot的应用程序的过程,包括设置基础环境、编写 HelloWorld 示例以及解决遇到的小问题。 首先,让我们深入了解一下Spring Boot的核心特点: 1...

    Spring中文版基础教程,从0开始教你Spring

    《Spring中文版基础教程》是一本面向初学者的详尽指南,旨在帮助读者从零开始掌握Spring框架的基础知识。Spring是Java开发中最流行的轻量级框架之一,它提供了丰富的功能来简化企业级应用的开发。本教程将带你一步步...

    java-spring-fast-base_java_springboot_swagger_jpaspring_micromet

    【标题】"java-spring-fast-...通过这个模板,开发者可以节省时间,专注于实现具体业务需求,而不用从零开始配置整个环境。同时,由于集成了Swagger和Micrometer,开发者可以更加方便地测试API并了解应用的运行状况。

    spring-boot-rest-api-tutorial-master.rar

    通过这个教程,你可以学习到如何从零开始创建一个完整的Spring Boot REST API应用,从设计API接口到实现业务逻辑,再到部署和测试。这将是一个宝贵的实践平台,帮助你掌握现代Web服务开发的关键技术。

    从0开始带你手撸一套SpringBoot+Vue后台管理系统

    在本项目中,我们将一起构建一个基于Spring Boot和Vue.js的后台管理系统,这是一次从零开始的学习旅程,旨在帮助开发者全面理解这两种技术的结合应用。Spring Boot是Java领域广泛使用的微服务框架,而Vue.js则是一种...

    springboot入门项目(springboot源码带sql)

    这个项目包含了源码和SQL数据库,这意味着你可以直接导入并运行,无需从零开始设置环境。 首先,Spring Boot是Spring框架的一个模块,设计目标是简化Spring应用的初始搭建以及开发过程。它预设了许多默认配置,使得...

    GitChatLesson-SpringBootStudy:CSDN GitChat达人课《跟武哥一起学Spring Boot》

    通过这个课程,学员将能从零开始,逐步建立起对Spring Boot的全面认知,并能独立开发出功能完备的应用。通过阅读和实践"GitChatLesson-SpringBootStudy-master"中的源代码,将有助于巩固理论知识并提升实际操作能力...

    first-spring-boot:tarup的Spring启动作业

    现在,我们将深入探讨Spring Boot的核心概念以及如何从零开始构建一个Spring Boot应用。 首先,Spring Boot的核心特性包括自动配置、起步依赖和内嵌Web服务器。自动配置是Spring Boot的一大亮点,它通过`@...

    廖雪峰springboot两小时入门课程的工程

    import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application....

Global site tag (gtag.js) - Google Analytics