1.JPA简介
(1.)说明:
经过一星期的培训,这周正式入职了,接触很多新的技术栈,第一个就是Spring Data JPA;
spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的规则进行【方法命名】去写dao层接口,就可以 在不写接口实现的情况下,实现对数据库的访问和操作。
同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查 询等等。 Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使 用Spring Data JPA + ORM(如:hibernate)完成操作,这样在切换不同的ORM框架时提供了极大的方便,同时也使 数据库层操作更加简单,方便解耦。
其实就是通过JPA这个规范,对于简单的数据库操作可以不用写SQL
2.与JDBC对比
相同处:
1.都跟数据∙库操作有关,JPA 是JDBC 的升华,升级版。
2.JDBC和JPA都是一组规范接口
3.都是由SUN官方推出的
不同处:1.JDBC是由各个关系型数据库实现的, JPA 是由ORM框架实现
2.JDBC 使用SQL语句和数据库通信。 JPA用面向对象方式, 通过ORM框架来生成SQL,进行操作。
3.JPA在JDBC之上的, JPA也要依赖JDBC才能操作数据库。
3.Mybatis与Hibernate对比
mybatis:小巧、方便?、高效、简单、直接、半自动的ORM框架。
小巧: mybatis就是jdbc封装
在国内更流行。
场景: 在业务比较复杂系统进行使用。
hibernate:强大、方便、高效、(简单)复杂、绕弯子、全自动的ORM框架。
强大:根据ORM映射生成不同SQL
在国外更流。
场景: 在业务相对简单的系统进行使用,随着微服务的流行。
4. JPA的优点
1.简化持久化操作的开发工作:让开发者从繁琐的 JDBC 和 SQL 代码中解脱出来,直接面向对象持久化操作。 2.Sun希望持久化技术能够统一,实现天下归一:如果你是基于JPA进行持久化你可以随意切换数据库。
同时提供:
1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对 象持久化到数据库表中;
如:@Entity 、 @Table 、@Id 与 @Column等注解。
2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和 SQL代码中解脱出来。
如:entityManager.merge(T t);
3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
如:from Student s where s.name = ?
5.阐述JPA与Hibernate关系
说明:
其实上面讲Mybatis与Hibernate的对比就是为了让大家对HIbernate有个简单的了解,因为JPA只是一个ORM规范,告诉我们应该怎么做,而Hibernate就是实现了JPA接口的ORM框架。在使用JDBC对数据库进行操作,如下图所示:
6.SpringBoot 整合Spring Data JPA
环境:
IDEA 2020.3 Mysql 5.7
这里就是最简单的项目,一些其他细节的地方,还是去看一些视频学习为好
(1)创建项目
说明:创建新的springboot项目(这里使用的是ali的镜像网站)
说明:这里只添加Spring Web 与Lombok
Lombok:实体类中通过注解可省略getter,setter,有参构造,无参构造等。
Spring Web:springboot起步依赖,默认的服务器是tomcat。
(2)配置依赖(pom坐标)
说明:在pom.xml中加入坐标在进行下载jar包。如果依然报红,就升一下springboot版本。
<!-- Spring Data JPA 依赖(重要) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- MySQL 驱动(重要) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>