首页 > 其他分享 >JPA

JPA

时间:2022-12-19 09:34:17浏览次数:20  
标签:name JPA 实体 指定 public 属性

定义

JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

优点

2.1标准化
JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,

这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
2.2容器级特性的支持
JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。
2.3简单方便
JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,

只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。

JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。
2.4查询能力
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。

JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,

操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
2.4高级特性
JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,

而不需要自行处理这些特性在关系数据库的持久化。

注解

@Entity   声明类为实体或表。
@Table   声明表名。
@Basic   指定非约束明确的各个字段。
@Embedded   指定类或它的值是一个可嵌入的类的实例的实体的属性。
@Id   指定的类的属性,用于识别(一个表中的主键)。
@GeneratedValue   指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值。
@Transient   指定的属性,它是不持久的,即:该值永远不会存储在数据库中。
@Column   指定持久属性栏属性。
@SequenceGenerator   指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。
@TableGenerator   指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表。
@AccessType   这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量并且不需要getter和setter,但必须为public。如果设置@AccessType(PROPERTY),通过getter和setter方法访问Entity的变量。
@JoinColumn   指定一个实体组织或实体的集合。这是用在多对一和一对多关联。
@UniqueConstraint   指定的字段和用于主要或辅助表的唯一约束。
@ColumnResult   参考使用select子句的SQL查询中的列名。
@ManyToMany   定义了连接表之间的多对多一对多的关系。
@ManyToOne   定义了连接表之间的多对一的关系。
@OneToMany   定义了连接表之间存在一个一对多的关系。
@OneToOne   定义了连接表之间有一个一对一的关系。
@NamedQueries   指定命名查询的列表。
@NamedQuery   指定使用静态名称的查询。

 

代码实战

4.1maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

4.2配置文件

在application.yml文件中添加如下配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mytest
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver //驱动
  jpa:
    hibernate:
      ddl-auto: update //自动更新
    show-sql: true  //日志中显示sql语句

4.3创建实体以及数据访问接口

实体类Person.java

@Entity
@Getter
@Setter
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "name", nullable = true, length = 20)
    private String name;

    @Column(name = "agee", nullable = true, length = 4)
    private int age;
}

 

PersonRepository.java,改接口只需要继承JpaRepository接口即可。

@RestController
@RequestMapping(value = "person")
public class PerconController {

    @Autowired
    private PersonRepository personRepository;

    @PostMapping(path = "addPerson")
    public void addPerson(Person person) {
        personRepository.save(person);
    }

    @DeleteMapping(path = "deletePerson")
    public void deletePerson(Long id) {
        personRepository.delete(id);
    }
}

 

标签:name,JPA,实体,指定,public,属性
From: https://www.cnblogs.com/baifeili/p/16443451.html

相关文章

  • Kotlin + SpringBoot + JPA 服务端开发
    Kotlin+SpringBoot+JPA服务端开发本篇主要介绍一下kotlin+springboot的服务端开发环境搭建1.概述Kotlin是一个基于JVM的编程语言,是IDEA开发工具jetbrai......
  • 理解JPA注解@GeneratedValue的使用方法
    一、JPA通用策略生成器通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是......
  • JPA @Table 注解
    ​​@Table​​ 是类级别的注解,用于声明实体映射到数据库中的具体的表。参数类型描述nameString表的名称,默认为实体名称(参考 ​​@Entity​​​ 注解的 ​​name​​​......
  • SpringBoot入门系列: JPA mysql(五)
    一,准备工作,建立spring-boot-sample-mysql工程1、http://start.spring.io/    A、Artifact中输入spring-boot-sample-mysql    B、勾选Web下的web    C、勾选......
  • springboot jpa创建表自动添加注释
    @Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})public@interfaceComment{Stringvalue()default......
  • 如何使用JPA实现Spring 授权服务器的核心服务
    本指南展示了如何使用JPA实现Spring授权服务器​的核心服务。本指南的目的是提供自己实现这些服务的起点,以便您可以根据需要进行修改。定义数据模型创建JPA实体创建Spr......
  • SpringBooot整合spring Data JPA多数据源
    Springboot整合springdatajpa多数据源在使用Mybatis时会涉及多数据源的问题,同样,当我们使用Jpa作为持久化处理方式时,也会涉及多数据源的问题,本节我们来讲解一下Sprin......
  • SpringBoot整合Spring Data JPA多数据源
    Springboot整合springdatajpa多数据源在使用Mybatis时会涉及多数据源的问题,同样,当我们使用Jpa作为持久化处理方式时,也会涉及多数据源的问题,本节我们来讲解一下Springboot......
  • SpringBoot中使用Spring Data JPA
    Springboot中如何集成springdatajpa一什么是ORM?ORM即Object-RelationlMapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需......
  • SpringBoot中使用Spring Data JPA
    Springboot中如何集成springdatajpa一什么是ORM?ORM即Object-RelationlMapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时......