文章目录

前言:什么是JPA?JPA优缺点优点1.简化开发:2.高度抽象:3.跨数据库支持:4.自动化的事务管理:

缺点1.学习成本较高:2.性能问题:3.灵活性受限:

示例版本依赖代码UserDOUserRepositoryJpaController

测试

总结源码获取写在最后

前言:

Spring Boot是一种快速开发框架,它简化了Java应用程序的开发过程。而Jpa(Java Persistence API)是Java持久化规范的一种实现,它提供了一种方便的方式来访问和操作数据库。将Spring Boot与Jpa整合可以更加方便地进行数据库操作,提高开发效率。本文将介绍如何使用Spring Boot整合Jpa,帮助读者快速上手并应用于实际项目中。

什么是JPA?

Jpa(Java Persistence API)是Java持久化规范的一种实现,它提供了一种方便的方式来访问和操作数据库。下面将介绍Jpa的优点和缺点。

JPA优缺点

优点

1.简化开发:

Jpa提供了一种面向对象的方式来进行数据库操作,开发人员可以使用Java对象来表示数据库表和记录,而不需要编写复杂的SQL语句。这样可以大大简化开发过程,提高开发效率。

2.高度抽象:

Jpa提供了一套高度抽象的API,隐藏了底层数据库的细节,开发人员可以更加专注于业务逻辑的实现,而不需要关注数据库的具体实现细节。这样可以降低开发的复杂性,提高代码的可维护性。

3.跨数据库支持:

Jpa支持多种数据库,开发人员可以在不同的数据库之间切换,而不需要修改大量的代码。这样可以提高系统的灵活性和可扩展性。

4.自动化的事务管理:

Jpa提供了自动化的事务管理机制,开发人员可以使用注解来标识事务的边界,Jpa会自动处理事务的提交和回滚。这样可以简化事务管理的代码,提高系统的稳定性和可靠性。

缺点

1.学习成本较高:

Jpa是一种复杂的技术,需要开发人员具备一定的数据库和ORM(对象关系映射)的知识。对于初学者来说,学习和掌握Jpa可能需要一定的时间和精力。

2.性能问题:

由于Jpa是一种高度抽象的技术,它会对数据库的访问和操作进行一定的封装和转换,这可能会导致一定的性能损失。在对性能要求较高的场景下,可能需要使用原生的SQL语句来进行数据库操作。

3.灵活性受限:

Jpa提供了一套标准的API,开发人员需要按照这套API来进行开发,这可能会限制一些特定的需求和场景。在一些复杂的业务场景下,可能需要使用原生的SQL语句或其他ORM框架来实现。

示例

版本依赖

模块版本SpringBoot3.1.0JDK17

代码

UserDO

@Entity

@Data

@Table(name = "user")

public class UserDO {

private static final long serialVersionUID = -2952735933715107252L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

private String name;

private Integer age;

private String email;

}

UserRepository

/**

* 查询方法:

* findBy/getBy/queryBy/readBy 后面跟要查询的字段名,用于精确匹配。

* find/get/query/read 后面跟要查询的字段名,使用条件表达式进行模糊匹配。

* findAll/getAll 后面不跟字段名,表示查询所有记录。

*

* 支持的关键字:

* And:连接多个查询条件,相当于 SQL 中的 AND。

* Or:连接多个查询条件,相当于 SQL 中的 OR。

* Between:用于查询字段在某个范围内的记录。

* LessThan/LessThanEqual:用于查询字段小于某个值的记录。

* GreaterThan/GreaterThanEqual:用于查询字段大于某个值的记录。

* IsNull/IsNotNull:用于查询字段为空或不为空的记录。

* Like/NotLike:用于模糊查询字段值。

* OrderBy:用于指定查询结果的排序方式。

*

* 删除方法:

* deleteBy/removeBy 后面跟要查询的字段名,用于精确匹配。

* delete/remove 后面跟要查询的字段名,使用条件表达式进行模糊匹配。

*

* 统计方法:

* countBy 后面跟要查询的字段名,用于精确匹配。

* count 后面不跟字段名,表示统计所有记录数。

*

* 更新方法:

* updateBy 后面跟要查询的字段名,用于精确匹配。

* update 后面跟要查询的字段名,使用条件表达式进行模糊匹配。

*

* 支持的关键字:

* Set:用于设置要更新的字段的值。

* Where:用于指定更新操作的条件。

*

* 部分查询关键字映射示例

* 关键字 使用示例

* And findByLastnameAndFirstname

* Or findByLastnameOrFirstname

* Is,Equals findByFirstnameIs,findByFirstnameEquals

* Between findByStartDateBetween

* LessThan findByAgeLessThan

* LessThanEqual findByAgeLessThanEqual

* GreaterThan findByAgeGreaterThan

* GreaterThanEqual findByAgeGreaterThanEqual

* After findByStartDateAfter

* Before findByStartDateBefore

* IsNull findByAgeIsNull

* IsNotNull,NotNull findByAge(Is)NotNull

* Like findByFirstnameLike

* NotLike findByFirstnameNotLike

* StartingWith findByFirstnameStartingWith

* EndingWith findByFirstnameEndingWith

* Containing findByFirstnameContaining

* OrderBy findByAgeOrderByLastnameDesc

* Not findByLastnameNot

* In findByAgeIn(Collection ages)

* NotIn findByAgeNotIn(Collection age)

* TRUE findByActiveTrue()

* FALSE findByActiveFalse()

* IgnoreCase findByFirstnameIgnoreCase

*/

public interface UserRepository extends JpaRepository {

UserDO findByName(String name);

UserDO findByNameOrEmail(String name, String email);

Long countByName(String name);

List findByNameLike(String name);

UserDO findByNameIgnoreCase(String name);

List findByNameContainingOrderByAgeDesc(String name);

Page findByName(String name,Pageable pageable);

}

JpaController

/**

* jpa测试

*/

@RestController

public class JpaController {

@Autowired

private UserRepository userRepository;

@GetMapping("/findByName")

public UserDO findByName(String name) {

return userRepository.findByName(name);

}

}

测试

至此示例发送完成

总结

通过本文的介绍,我们了解了如何使用Spring Boot整合Jpa来进行数据库操作。

Spring Boot提供了简洁的配置和便捷的开发方式,而Jpa则提供了方便的数据库访问和操作方式。

将二者结合起来,可以更加高效地进行数据库开发。

希望本文对读者有所帮助,让大家能够快速上手并应用于实际项目中。

源码获取

如果需要完整源码请关注公众号"架构殿堂" ,回复 "SpringBoot+Jpa"即可获得

写在最后

感谢您的支持和鼓励! 

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。