使用JPA自动生成代码(轻松上手看了就会版)

简介: 使用JPA自动生成代码(轻松上手看了就会版)

背景:

项目需要自动生成sql代码,不需要写sql语句,能够自动进行查询,我想到了JPA。

方案

概念:

JPA 的全称是 Java Persistence API,是 Java EE 规范之一,用于定义 Java 对象与关系型数据库之间的映射关系。JPA 提供了一种简单的方式,让开发者可以通过面向对象的方式来操作数据库,而不需要手动编写 SQL 语句。

JPA 的主要作用

1、将 Java 对象映射到关系型数据库中的表格。

2、提供了一种统一的 API,可以让开发者以面向对象的方式来操作数据库,而不需要关心底层的数据库操作细节。

3、支持事务处理、缓存管理等高级功能。

4、提供了查询语言 JPQL,可以以面向对象的方式编写查询语句。

JPA 是 Java EE 规范的一部分,不是一个具体的实现。常见的 JPA 实现包括 Hibernate、EclipseLink、OpenJPA 等。在使用 JPA 进行开发时,可以选择一个符合自己需求的 JPA 实现,并按照 JPA 的规范进行开发。

jpa简单使用(Springboot项目)

@Repository
public interface ContentGrainDao extends JpaRepository<ContentGrain, Long> {
}
@SpringBootApplication
public class PushClassApplication implements CommandLineRunner {
    @Autowired
    ContentGrainDao contentGrainRepository;
    @Autowired
    private UserOrderRepository userOrderRepository;
    public static void main(String[] args) {
        SpringApplication.run(PushClassApplication.class,args);
    }
    @Override
    public void run(String... args) throws Exception {
//将断点打到这里
        List<ContentGrain> result = contentGrainRepository.findAll();
        System.out.println("222");
}
}

jpa进阶使用

//AcademyEntity 是要查表的实体,Long是这张表的主键类型
public interface TTAcademyDao  extends JpaRepository<AcademyEntity, Long> 
{
    AcademyEntity findByNameAndIsDelete(String name, int isDelete);
}

JPA 的命名规范是基于方法名称自动生成 SQL 查询语句,方法名称必须遵循一定的规范,以便自动生成正确的 SQL 语句。

根据 JPA 命名规范,findByNameAndIsDelete 这个方法名表示按照 name 和 isDelete 属性进行查询。具体解释如下:

find:表示这是一个查询方法。

By:表示按照某个属性进行查询。

Name:表示按照 name 属性进行查询。

And:表示并且关系,即同时满足两个条件。

IsDelete:表示按照 isDelete 属性进行查询。

根据这个方法名称,JPA 可以自动生成类似下面的 SQL 查询语句:

SELECT * FROM AcademyEntity WHERE name = ? AND is_delete = ?

这样就可以通过方法名称来实现简单的查询操作,而不需要手动编写 SQL 查询语句。需要注意的是,JPA 命名规范有一定的限制,不支持所有的查询语句,一些复杂的查询仍然需要手动编写 SQL 语句(个人认为没有必要,要是需要使用sql的话,就不用JPA了)。

总结

善假于物实现自动化~

JPA(Java Persistence API)是Java平台上的一种ORM(对象关系映射)规范,它提供了一种简化数据库操作的方法,将Java对象与数据库表之间的映射关系交给JPA来管理。使用JPA带来了许多好处,其中一些主要的好处如下:

简化数据库操作:JPA封装了许多常见的数据库操作,如插入、更新、删除和查询等,使得数据库访问变得更加简洁和易于理解。通过JPA,开发人员可以使用面向对象的方式来操作数据库,而不需要编写复杂的SQL语句。

提高生产效率:使用JPA可以大大减少开发人员的工作量,因为不再需要手动编写大量的SQL语句和数据库访问代码。JPA提供了一套自动化的持久化机制,可以将Java对象持久化到数据库中,并从数据库中检索数据,从而加快开发速度。

跨数据库支持:JPA提供了一种与数据库无关的编程方式,使得应用程序可以轻松地从一个数据库切换到另一个数据库,而不需要修改大量的代码。这种特性为应用程序的可移植性和可扩展性提供了便利。

对象关系映射:JPA通过对象关系映射将Java对象与数据库表之间建立起映射关系,使得开发人员可以更自然地使用面向对象的方式来操作数据。这种方式可以减少代码的冗余,提高代码的可维护性。

缓存支持:JPA提供了一级缓存和二级缓存的支持,可以减少数据库访问,提高应用程序的性能和响应速度。

事务管理:JPA提供了对事务的支持,可以保证在一系列数据库操作中,要么全部成功提交,要么全部失败回滚,从而确保数据库的一致性和完整性。

标准化规范:JPA是Java EE的一部分,它提供了一个标准的API,使得不同的JPA实现可以在不同的应用服务器上运行。这种标准化规范促进了开发人员之间的合作和知识共享。

总的来说,使用JPA可以简化数据库操作、提高开发效率、增加代码的可维护性,同时提供跨数据库支持和事务管理等重要功能,使得Java开发人员能够更专注于业务逻辑的实现,而不必过多关注数据库操作的细节。


相关文章
|
XML 数据格式
Camunda常用功能
Camunda常用接口简介
3364 1
Camunda常用功能
|
2天前
|
前端开发 JavaScript 开发者
实用技巧:提高前端开发效率的5个方法
提高前端开发效率是每个开发者都追求的目标。本文将介绍5个实用的技巧,帮助前端开发者提升工作效率:使用代码片段加速开发、合理利用浏览器开发者工具、充分利用现有框架和库、使用自动化构建工具、保持学习和不断优化工作流程。
|
5月前
|
算法 数据可视化 定位技术
【python实操】如何通过简单拖拽直接开发软件,避免手写界面布局
【python实操】如何通过简单拖拽直接开发软件,避免手写界面布局
62 0
|
4月前
|
IDE 前端开发 搜索推荐
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
110 0
|
前端开发 Java 关系型数据库
EasyCode和Lombok插件的使用,一键生成所需代码(两大代码神器)
📒 程序员小王的博客:程序员小王的博客 🎉 欢迎点赞 👍 收藏 ⭐留言 📝 😊 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
341 0
EasyCode和Lombok插件的使用,一键生成所需代码(两大代码神器)
|
Java Maven
《保姆教程二》idea 的使用技巧,墙裂推荐收藏!!!疯狂提升代码开发效率和代码质量
在平常的开发中,发现一些同事对Idea 使用的不是很熟练,仅仅用来编辑,编译,不能很好的发挥Idea 的神奇。整理了下我平常用的一些技巧,希望你能从中学习到一些。开始吧
120 0
《保姆教程二》idea 的使用技巧,墙裂推荐收藏!!!疯狂提升代码开发效率和代码质量
|
数据可视化 Java API
GUI 的 JavaWeb 鸡肋代码生成器 确定不了解了解?
GUI 的 JavaWeb 鸡肋代码生成器 确定不了解了解?
189 0
GUI 的 JavaWeb 鸡肋代码生成器 确定不了解了解?
|
Java 编译器 Maven
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(二)
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(二)
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(二)
|
Web App开发 Java 应用服务中间件
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(一)
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(一)
【快速上手SpringBoot】盘点盘点入门程序制作的四种方式(有图有代码)(一)
|
机器学习/深度学习 人工智能 Java
IDEA高效使用教程,一劳永逸!
IDEA高效使用教程,一劳永逸!
151 0
IDEA高效使用教程,一劳永逸!