Spring Boot(17)——使用Spring Data JPA

简介: 使用Spring Data JPA使用Spring Data JPA需要在pom.xml中添加spring-boot-starter-data-jpa依赖。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>之后就可以在应用中定义Entity了,并使用javax.persistence相关注解了。

使用Spring Data JPA

使用Spring Data JPA需要在pom.xml中添加spring-boot-starter-data-jpa依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
AI 代码解读

之后就可以在应用中定义Entity了,并使用javax.persistence相关注解了。比如下面就定义了一个简单的User实体。

@Entity
@Table(name="tb_user")
@Data
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    private String username;
    
}
AI 代码解读

之后可以定义自己的JpaRepository。

public interface UserJpaRepository extends JpaRepository<User, Long> {

    List<User> findByName(String name);
    
}
AI 代码解读

如果你的目录结构是按照Spring Boot建议的目录结构,上面定义的Repository将自动被Spring Boot扫描到,并被注册为一个Spring bean。Spring Boot默认会扫描标注了@SpringBootApplication注解的Class所在的package下面的所有的package。如果需要扫描其它目录下的Repository,则可以通过@EnableJpaRepositories("com.xxx.package")来指定。

之后就可以在Service中注入定义好的Repository进行相应的增删改查了,比如下面这样:

@Service
public class UserService {

    @Autowired
    private UserJpaRepository userRepository;
    
    public void save(User user) {
        this.userRepository.save(user);
    }
    
    public void save(List<User> users) {
        this.userRepository.saveAll(users);
    }
    
    public List<User> findByName(String name) {
        return this.userRepository.findByName(name);
    }
    
    public Optional<User> findById(Long id) {
        return this.userRepository.findById(id);
    }
    
}
AI 代码解读

添加了spring-boot-starter-data-jpa依赖后,默认会使用JPA的Hibernate实现。org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration将负责JPA的自动配置,其只有在bean容器中只定义了一个DataSource时才会进行自动配置。可以通过spring.jpa前缀的配置属性配置Hibernate JPA的相关信息,对应的配置属性将由org.springframework.boot.autoconfigure.orm.jpa.JpaProperties负责接收。可以通过spring.jpa.show-sql指定是否需要打印SQL语句,可以通过spring.jpa.hibernate.*指定Hibernate特定的配置信息。比如通过spring.jpa.hibernate.ddl-auto指定是否需要基于实体配置自动应用对应的DDL语句到数据库,它相当于使用Hibernate时的hibernate.hbm2ddl.auto

spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
AI 代码解读

Spring Boot会自动注册org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor,以便可以在Web应用中使用懒加载。如果不需要自动注册OpenEntityManagerInViewInterceptor,则可以配置spring.jpa.open-in-view=false。关于JPA可以配置的更多信息请参考org.springframework.boot.autoconfigure.orm.jpa.JpaProperties的API文档。

Spring Boot默认会自动扫描Jpa Repository,如果不希望自动扫描Repository,可以配置spring.data.jpa.repositories.enabled=false

本文主要介绍在Spring Boot应用中如何使用Spring Data Jpa,关于Spring Data Jpa的更多应用请参考相应的文档。

(注:本文是基于Spring Boot 2.0.3所写)

目录
相关文章
|
20天前
|
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
62 21
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
45 6
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
255 17
Spring Boot 两种部署到服务器的方式
Spring Boot 3 集成 Spring Security + JWT
本文详细介绍了如何使用Spring Boot 3和Spring Security集成JWT,实现前后端分离的安全认证概述了从入门到引入数据库,再到使用JWT的完整流程。列举了项目中用到的关键依赖,如MyBatis-Plus、Hutool等。简要提及了系统配置表、部门表、字典表等表结构。使用Hutool-jwt工具类进行JWT校验。配置忽略路径、禁用CSRF、添加JWT校验过滤器等。实现登录接口,返回token等信息。
382 12
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
85 8
【Spring】——SpringBoot项目创建
SpringBoot项目创建,SpringBootApplication启动类,target文件,web服务器,tomcat,访问服务器
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
211 5
详解Spring Batch:在Spring Boot中实现高效批处理
详解Spring Batch:在Spring Boot中实现高效批处理
486 12
详解Spring Profiles:在Spring Boot中实现环境配置管理
详解Spring Profiles:在Spring Boot中实现环境配置管理
168 10
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
81 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等