深入Spring Boot生态中最核心部分 数据库交互spring-boot-starter-data-jpa和Hibernate (指南五)。

Spring Boot 与 JPA 的核心整合

Spring Boot 通过 spring-boot-starter-data-jpa 简化了与数据库的交互,底层默认集成 Hibernate 作为 JPA 实现。这一组合提供了对象关系映射(ORM)能力,允许开发者通过 Java 对象操作数据库,无需编写繁琐的 SQL。

依赖配置

pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

H2 数据库作为内存数据库,适合快速演示。实际项目中可替换为 MySQL 或 PostgreSQL。


实体类定义

JPA 通过注解将 Java 类映射到数据库表。以下是一个用户实体类的示例:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String username;

    @Column(name = "email", length = 100)
    private String email;

    // Lombok 注解省略构造器/getter/setter
}
  • @Entity 标记该类为 JPA 实体。
  • @Table 指定表名(可选)。
  • @Id@GeneratedValue 定义主键及其生成策略。

仓库接口

Spring Data JPA 通过接口自动生成 CRUD 操作。扩展 JpaRepository 即可获得基础方法:

public interface UserRepository extends JpaRepository<User, Long> {
    // 自定义查询方法
    List<User> findByUsername(String username);

    @Query("SELECT u FROM User u WHERE u.email LIKE %?1%")
    List<User> searchByEmail(String emailPattern);
}
  • 方法命名遵循规则(如 `findByX

Spring Boot 与 JPA 的核心整合

Spring Boot 通过 spring-boot-starter-data-jpa 简化了与数据库的交互,底层默认集成 Hibernate 作为 JPA 实现。这一组合提供了对象关系映射(ORM)能力,允许开发者通过 Java 对象操作数据库,无需编写繁琐的 SQL。

依赖配置

pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

H2 数据库作为内存数据库,适合快速演示。实际项目中可替换为 MySQL 或 PostgreSQL。


实体类定义

JPA 通过注解将 Java 类映射到数据库表。以下是一个用户实体类的示例:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String username;

    @Column(name = "email", length = 100)
    private String email;

    // Lombok 注解省略构造器/getter/setter
}
  • @Entity 标记该类为 JPA 实体。
  • @Table 指定表名(可选)。
  • @Id@GeneratedValue 定义主键及其生成策略。

仓库接口

Spring Data JPA 通过接口自动生成 CRUD 操作。扩展 JpaRepository 即可获得基础方法:

public interface UserRepository extends JpaRepository<User, Long> {
    // 自定义查询方法
    List<User> findByUsername(String username);

    @Query("SELECT u FROM User u WHERE u.email LIKE %?1%")
    List<User> searchByEmail(String emailPattern);
}
  • 方法命名遵循规则(如 `findByX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值