Lombok @Builder 和 JPA 默认构造函数

spring

1个回答

写回答

爆炸夹鑫

2025-06-24 22:10

+ 关注

Java
Java

使用Lombok的@Builder注解和JPA的默认构造函数可以大大简化Java代码的编写。这两个特性的结合使用为我们提供了一种更简洁、更高效的方式来创建和操作对象。接下来我们将通过一个案例来详细介绍这两个特性的使用。

案例背景:

假设我们正在开发一个电商平台,需要设计一个商品实体类,该实体类包含商品的名称、价格、库存等属性。我们希望能够通过Lombok的@Builder注解来实现一个便捷的构建器,同时又能够利用JPA的默认构造函数来简化数据库操作。

使用@Builder注解构建商品实体类:

在使用Lombok的@Builder注解之前,我们通常需要手动编写一个复杂的构造函数来初始化对象的各个属性。而使用@Builder注解后,我们只需要在实体类上添加该注解,并在需要构建的属性上添加@Builder.Default注解,即可自动生成一个构建器。

下面是我们的商品实体类的代码示例:

Java

import lombok.Builder;

import lombok.Getter;

import lombok.Setter;

import Javax.persistence.Entity;

import Javax.persistence.GeneratedValue;

import Javax.persistence.GenerationType;

import Javax.persistence.Id;

@Entity

@Builder

@Getter

@Setter

public class Product {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

private String name;

private double price;

@Builder.Default

private int stock = 0;

}

在上述代码中,我们使用了Lombok的@Getter和@Setter注解来自动生成属性的Getter和Setter方法,使用@Entity注解将该类标记为JPA实体,使用@Id和@GeneratedValue注解来定义商品的唯一标识符。同时,我们在stock属性上使用了@Builder.Default注解来指定该属性的默认值为0。

使用JPA的默认构造函数进行数据库操作:

在使用JPA进行数据库操作时,我们通常需要手动编写一个空的默认构造函数。而通过Lombok的@Builder注解,我们可以直接使用该注解来自动生成带有默认构造函数的实体类。

下面是我们使用JPA进行商品数据库操作的代码示例:

Java

import org.Springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {

}

在上述代码中,我们定义了一个商品的JPA仓库接口ProductRepository,并继承自JpaRepository接口。通过继承JpaRepository接口,我们可以直接使用其中定义的一些常用方法,如保存商品、删除商品、查询商品等。

使用@Builder和JPA默认构造函数创建商品对象并进行数据库操作:

现在,我们可以使用@Builder注解来创建商品对象,并利用JPA的默认构造函数来进行数据库操作。

下面是我们创建商品对象并进行数据库操作的代码示例:

Java

import org.Springframework.beans.factory.annotation.Autowired;

import org.Springframework.stereotype.Service;

@Service

public class ProductService {

private final ProductRepository productRepository;

@Autowired

public ProductService(ProductRepository productRepository) {

this.productRepository = productRepository;

}

public void createProduct() {

Product product = Product.builder()

.name("手机")

.price(2999.0)

.stock(100)

.build();

productRepository.save(product);

}

}

在上述代码中,我们通过@Autowired注解自动注入了ProductRepository,然后在createProduct方法中使用@Builder注解创建了一个商品对象,并通过productRepository.save方法将该商品保存到数据库中。

:

通过使用Lombok的@Builder注解和JPA的默认构造函数,我们可以大大简化Java代码的编写。@Builder注解提供了一个便捷的构建器,可以自动生成复杂的构造函数,而JPA的默认构造函数则可以简化数据库操作。这两个特性的结合使用,能够让我们的代码更加简洁、高效,提升开发效率。

使用@Builder注解构建商品实体类

使用JPA的默认构造函数进行数据库操作

使用@Builder和JPA默认构造函数创建商品对象并进行数据库操作

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号