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>

之后就可以在应用中定义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;
    
}

之后可以定义自己的JpaRepository。

public interface UserJpaRepository extends JpaRepository<User, Long> {

    List<User> findByName(String name);
    
}

如果你的目录结构是按照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);
    }
    
}

添加了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

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所写)

目录
相关文章
|
11天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
22 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
56 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
存储 Java API
如何使用 Java 记录简化 Spring Data 中的数据实体
如何使用 Java 记录简化 Spring Data 中的数据实体
37 9
|
1月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
65 2
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
106 1
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
27 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
26 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
56 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
1月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
101 0
|
1月前
|
监控 数据可视化 Java
springBoot:actuator&admin 图形可视化&spring 打包 (七)
本文介绍了Spring Boot Actuator及其图形化管理界面Spring Boot Admin的使用方法,包括依赖导入、服务端与客户端配置、以及如何打包为JAR和WAR文件并部署。通过这些步骤,可以实现应用的监控和管理功能。
下一篇
无影云桌面