JPA

简介: JPA

JPA


JPA 相关概念

ORM 框架

(Object Relational Mapping) 建立 Java 程序实体类与数据库表之间的映射关系。使用 ORM 框架进行编程 Java 程序会根据开发者配置,在运行时自动把数据对象持久化到数据库中,比直接使用 JDBC 编程更为方便和强大。

常见的 ORM 框架有 Hibernate, MyBatis 等。

JPA 规范

(Java Persistence API) Java 程序和数据库连接的 Java EE 标准,本质上是一种 ORM 规范。使用户不必在 Java 程序中书写 SQL 语句就能直接把数据对象持久化到数据库中,由数据库厂商负责具体实现。

JDBC 和 JPA 的区别

  • JDBC 是面向 SQL 的规范和接口,用户仍需要在 java 程序中书写 SQL 语句。
  • JPA 是直接面向数据对象的规范和接口,可以通过直接操作对象来实现持久化,大大简化了操作的繁杂度。

P.S. Hibernate 是符合 JPA 规范的,而 MyBatis 却不符合,因为 MyBatis 还需要书写 SQL 语句。

www.jianshu.com/p/c14640b63…


Spring JPA

Spring 框架中提供了对数据操作的框架 SpringData ; SpringData 框架下则提供了基于 JPA 标准操作数据的模块 SpringData JPA 。

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table;

实体类

@Entity 声明实体类,自动对应数据库表(必选)

@Table(name = "AUTH_USER") 声明了数据库实体对应的表名,如果没有默认表名和实体名一致。

属性

@Id 声明属性对应数据库字段是主键。

@Column(length = 32) 用来声明实体属性的表字段的定义。

  1. name - 属性对应数据库字段名,默认和属性名称一致。
  2. length - 属性对应数据库字段长度,默认 255。
  3. 属性对应数据库字段类型会自动推断。
@Entity
@Table(name = "AUTH_USER")
public class UserDO {
    @Id
    private Long id;
    @Column(length = 32)
    private String name;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}Copy to clipboardErrorCopied
复制代码

运行时,系统自动将数据表给我们建好了。

我们要实现一个增加、删除、修改、查询功能的持久层服务,那么我只需要声明一个接口,这个接口继承 org.springframework.data.repository.Repository<T, ID> 接口或者他的子接口就行。这里为了功能的完备,我们继承了 org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口。其中 T 是数据库实体类,ID 是数据库实体类的主键。 然后再简单的在这个接口上增加一个 @Repository 注解就结束了。

@Repository
public interface UserDao extends JpaRepository<UserDAO, id> {
}Copy to clipboardErrorCopied
复制代码

UserDO userDO = new UserDO(); userDO.setId(1L); userDO.setName("风清扬");


作者:武师叔

链接:https://juejin.cn/post/7113368146811027486

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
7天前
|
SQL 分布式计算 数据库
ApacheHudi使用问题汇总(二)
ApacheHudi使用问题汇总(二)
30 0
|
8月前
3.3 Path
3.3 Path
54 0
|
Windows
cclientX,pageX,screenX等详解
clientX 观点:鼠标相对于WINDOWS的坐标。 这里这个WINDOWS是指我们能看见的浏览器大小。所以不可能超过显示器的大小,如 screen.width,screen.height
89 0
PAT有几个pat
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位§,第4位(A),第6位(T);第二个PAT是第3位§,第4位(A),第6位(T)。 现给定字符串,问一共可以形成多少个PAT?
82 0
OPA 4 - createButtonTest
Created by Wang, Jerry on Nov 08, 2015
OPA 4 - createButtonTest
|
JavaScript 前端开发
|
XML 数据格式 .NET