当前位置: 首页 > article >正文

日用放大器

JPA 相关概念

ORM 框架

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

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

JPA 规范

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

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

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

SpringBoot 中 JPA 的使用 - 简书


Spring JPA

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

导入 javax.persistence.Column; 导入 javax.persistence.Entity; 进口 javax.persistence.Id; 导入 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;
    }
}

 

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

我们要实现一个增加、删除、修改、查询功能的持久层服务,那么我只需要声明一个接口,这个接口继承 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> {
}

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


http://www.kler.cn/a/306854.html

相关文章:

  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • 如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息
  • 深入探索React合成事件(SyntheticEvent):跨浏览器的事件处理利器
  • 边缘的检测
  • 随手记:简单实现纯前端文件导出(XLSX)
  • 2024版本IDEA创建Sprintboot项目下载依赖缓慢
  • 监控binlog日志监控表变化进行消息通知
  • Gartner发布报告揭秘微软数据安全功能和许可
  • (CVPR-2022)感知优先的扩散模型训练
  • 基于51单片机的倒计时音乐播放系统设计
  • Android libui新加接口,编译报错:error: Please update ABI references
  • 鸿蒙开发之ArkTS 基础八 联合类型
  • 搭建Eureka高可用集群 - day03
  • 智能工厂的设计软件 “程序”的完整框架
  • JAVA学习笔记02-integer
  • 二叉树算法
  • 掌握单片机,其实并不难
  • LeetCode70:爬楼梯
  • 【算法】 滑动窗口—最长无重复子串
  • iPhone手机备忘录转移到Windows电脑上的方法
  • adb devices不显示连接设备怎么解决
  • AI+教育|拥抱AI智能科技,让课堂更生动高效
  • 直播相关03-录制麦克风声音, ffmpeg 命名,使用命令行完成录音
  • 速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令,DS寄存器
  • “MIME 媒体类型“用来标识网络传输内容的格式标准
  • [Python办公]常用Python数据采集爬虫技术对比