使用SpringBoot整合Jpa的过程详解
作者:fking86
什么是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框架来实现。
示例
版本依赖
模块 | 版本 |
---|---|
SpringBoot | 3.1.0 |
JDK | 17 |
代码
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, Long> { UserDO findByName(String name); UserDO findByNameOrEmail(String name, String email); Long countByName(String name); List<UserDO> findByNameLike(String name); UserDO findByNameIgnoreCase(String name); List<UserDO> findByNameContainingOrderByAgeDesc(String name); Page<UserDO> 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的过程详解的文章就介绍到这了,更多相关SpringBoot整合Jpa内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!