📜  Spring Boot JpaRepository 与示例(1)

📅  最后修改于: 2023-12-03 15:20:12.577000             🧑  作者: Mango

Spring Boot JpaRepository 与示例

Spring Boot 是一种微服务框架,可以让你更快速、更容易地构建基于 Spring 的应用程序。JpaRepository 则是 Spring Data 提供的一个基于 JPA(Java Persistence API)技术的数据访问对象(DAO)框架,可帮助您更轻松地处理相关数据。

为什么选择 Spring Boot JpaRepository?
  • 快速: 长时间的配置已成为过去。Spring Boot 可以帮助您快速启动您的应用程序。
  • 方便: 在 Spring Boot 中修改和添加端点和功能变得非常容易。它允许您集成最流行的库和框架。
  • 强大的生态系统: Spring 是一种非常受欢迎的技术,因此有很多库和框架与它兼容。
如何使用 Spring Boot JpaRepository?

在使用 Spring Boot JPA 前,您需要先添加 spring-boot-starter-data-jpa 依赖。这个起步器包含了我们需要的 JPA,Hibernate 以及其他数据库驱动包。

pom.xml:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

接下来,您需要创建一个实体类以映射数据库表,并创建一个 repository 类,以定义读写该实体类的操作。

创建实体类

假设我们要存储图书信息,那么我们可以创建以下实体类:

@Entity
@Table(name = "book")
public class Book {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    private String title;
 
    private String author;
 
    private String description;
 
    public Long getId() {
        return id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getAuthor() {
        return author;
    }
 
    public void setAuthor(String author) {
        this.author = author;
    }
 
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
}

在这个实体类中,我们使用 @Entity@Table 注释将类映射到数据库表。我们还使用 @Id@GeneratedValue 注解定义主键,以及属性和 setter/getter 方法。

创建 Repository

我们的实体类已准备好,接下来我们需要创建一个 repository 类,该类将充当我们的 DAO 对象,使我们能够读写图书信息。

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}

在这个 repository 类中,我们使用 @Repository 注解将它标记为数据访问对象,通过使用 JpaRepository,我们可以从中继承常见适用于所有实体的即时 CRUD 操作。在这里,我们的 BookRepository 接口扩展了 JpaRepository<Book, Long>,其中第二个参数指定主键的类型。

创建 Service

我们现在已经创建了实体类和 repository,现在我们需要对 repository 进行包装,以便在一个服务中使用。我们可以创建一个 BookService 类:

@Service
public class BookService {
 
    @Autowired
    private BookRepository bookRepository;
 
    public List<Book> getAll() {
        return bookRepository.findAll();
    }
 
    public Optional<Book> getById(Long id) {
        return bookRepository.findById(id);
    }
 
    public Book create(Book book) {
        return bookRepository.save(book);
    }
 
    public Book update(Long id, Book book) throws Exception {
        Optional<Book> optionalBook = bookRepository.findById(id);
 
        if (!optionalBook.isPresent()) {
            throw new Exception("Book not found with id: " + id);
        }
 
        book.setId(id);
        return bookRepository.save(book);
    }
 
    public void deleteById(Long id) {
        bookRepository.deleteById(id);
    }
}

在这个服务类中,我们使用 @Service 注解将它标记为服务类。我们使用 @Autowired 注解自动装配我们的 BookRepository 对象。BookService 类包装了 repository,以使其可以在您的应用程序的其他部分中使用。在这个示例中,我们为读取、创建、更新和删除操作提供了方法。

结论

Spring Boot JpaRepository 是一个非常有用的 DAO 框架,在处理数据库操作时可以提高效率和可读性。通过创建这样的类,您可以专注于业务逻辑,而不用担心复杂的 SQL 语句。以上示例展示了如何使用 Spring Boot 和 JpaRepository 创建一个简单的 DAO 对象,使用 Hibernate 进行数据库操作。