jpa使⽤注解传递对象_SpringBoot2.x系列教程——整合使⽤
JPA
⼀. JPA简介
1. JPA概念
JPA是Sun官⽅提出的Java持久化规范,是Java Persistence API的简称,中⽂名‘Java持久层API’,它本质上是⼀种ORM规范。
JPA通过 JDK 5.0 的 注解或XML 两种形式来描述 ‘对象--关系表’ 的映射关系,并将运⾏期的实体对象持久化到数据库中。
2. JPA出现的原因
Sun引⼊ JPA 规范是出于两个原因:
1. 简化现有Java EE和Java SE的开发⼯作;
2. Sun希望整合ORM技术,实现天下归⼀。
也就是说,Sun提出JPA规范的⽬的就是想以官⽅⾝份来统⼀各种ORM框架的规范,包括著名的Hibernate、TopLink等。这样就可以避免开发者为了使⽤Hibernate,要学习⼀套ORM框架;为了使⽤TopLink框架,⼜要再学习⼀套ORM框架,免去了重复学习的过程!
3. JPA涵盖的技术
JPA的总体思想和现有的Hibernate、TopLink、JDO、Mybatis等ORM框架⼤体⼀致。
总的来说,JPA包括以下3⽅⾯的技术:
(1).ORM映射元数据
JPA⽀持XML和JDK 5.0中的注解两种形式,通过元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
(2).JPA的API
⽤来操作实体对象,执⾏CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
(3).查询语⾔
通过⾯向对象⽽⾮⾯向数据库的查询语⾔查询数据,避免程序的SQL语句紧密耦合。
4. JPA与其他ORM框架的关系
JPA的本质是⼀种ORM规范(不是ORM框架,因为JPA并未提供ORM实现,只是制定了规范),⽽⾮实现。
它只提供了⼀些相关的接⼝,但是这些接⼝并不能直接使⽤,JPA的底层需要某种JPA实现,⽽Hibernate等框架则是对JPA的⼀种具体实现。
也就是说JPA仅仅是⼀套规范,不是⼀套产品, Hibernate, TopLink等都是实现了JPA规范的⼀套产品。
Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java Persistence API)兼容认证。
所以JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接⼝,Hibernate是实现,他们之间并不是对标的关系,下图可以表明他们之间的关系。jpa mybatis
Hibernate属于遵循JPA规范的⼀种实现,但是Hibernate还有其他要实现的规范。所以它们的关系更类似于是:JPA是⼀种做⾯条的标准规范,⽽Hibernate是⼀种遵循做⾯条规范的具体的汤⾯;它不仅遵循了做⾯条的规范,同时也会遵循做汤和调料的其他规范。
5. JPA中的注解
⼆. Spring Boot整合JPA实现过程
1. 创建web程序
我们按照之前的经验,创建⼀个web程序,并将之改造成Spring Boot项⽬,具体过程略。
2. 添加依赖包
org.springframework.boot spring-boot-starter-data-jpamysql mysql-connector-javacom.alibaba druid 1.1.10
3. 添加配置⽂件
创建l配置⽂件
spring: datasource: url: jdbc:mysql://localhost:3306/db4?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true type: com.a jpa.hibernate.ddl-auto是hibernate的配置属性,其主要作⽤是:⾃动创建、更新、验证数据库表结构。
该参数的⼏种配置如下:
·create:每次加载hibernate时都会删除上⼀次的⽣成的表,然后根据你的model类再重新来⽣成新表,哪怕两次没有任何改变也要这样执⾏,这就是导致数据库表数据丢失的⼀个重要原因。
·create-drop:每次加载hibernate时根据model类⽣成表,但是sessionFactory⼀关闭,表就⾃动删除。
·update:最常⽤的属性,第⼀次加载hibernate时根据model类会⾃动建⽴起表的结构(前提是先建⽴好数据库),以后加载
hibernate时根据model类⾃动更新表结构,即使表结构改变了但表中的⾏仍然存在不会删除以前的⾏。要注意的是当部署到服务器后,表结构是不会被马上建⽴起来的,是要等应⽤第⼀次运⾏起来后才会。
·validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进⾏⽐较,不会创建新表,但是会插⼊新值。
4. 创建实体类
boot.domain;import lombok.Data;import lombok.ToString;import javax.persistence.Column;import javax.persistence.Entity;import javax.p
5. 创建DataSource配置类
fig;import com.alibaba.druid.pool.DruidDataSource;import lombok.Data;import org.t.properties.Con
6. 创建JPA实体仓库
pository;boot.domain.User;import org.springframework.pository.JpaRepository;/** * @Author ⼀⼀哥Sun * @D 7. 创建Controller测试接⼝
boot.web;boot.domain.User;pository.UserRepository;import org.springframework.beans.factory.a
8. 创建Application启动类
boot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @Au⼀完整项⽬结构:
在浏览器中进⾏get查询:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论