📜  spring boot entitymanager 示例 (1)

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

Spring Boot EntityManager 示例介绍

在Spring Boot中,使用EntityManager可以完成对数据库的CRUD操作。本篇文章将介绍如何使用EntityManager来进行持久化操作。

实体(Entity)定义

首先,需要定义实体类。实体类是与数据库中的表相对应的类。这里以一个用户(User)实体类为例:

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

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    // getter 和 setter
}
  • @Entity:标注此类为实体类
  • @Table(name = "user"):指定实体类映射到数据库表名为user
  • @Column(name = "name"):指定实体类属性与数据库表字段名的对应关系
  • @Id:标注此属性为实体类的主键,通常使用自增长策略
  • @GeneratedValue(strategy = GenerationType.IDENTITY):指定主键的自增长策略
Repository定义

定义完实体类后,需要定义Repository接口。Repository接口是通过EntityManager来完成对数据的操作。以下是一个简单的UserRepository接口定义:

public interface UserRepository {

    void save(User user);

    User findById(Long id);

    void delete(User user);

    List<User> findAll();

}
实现Repository接口

定义完Repository接口后,需要实现Repository接口,以完成对数据的CRUD操作。实现UserRepository接口的示例代码如下:

@Repository
@Transactional
public class UserRepositoryImpl implements UserRepository {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void save(User user) {
        entityManager.persist(user);
    }

    @Override
    public User findById(Long id) {
        return entityManager.find(User.class, id);
    }

    @Override
    public void delete(User user) {
        entityManager.remove(user);
    }

    @Override
    public List<User> findAll() {
        return entityManager.createQuery("SELECT u FROM User u", User.class).getResultList();
    }

}
  • @Repository:标注此类为Repository。使用Spring Boot时,通常需要将@Repository注解加在Repository实现类上
  • @Transactional:打开事务支持
  • @PersistenceContext:注入EntityManager实例
  • entityManager.persist(user):持久化User实例
  • entityManager.find(User.class, id):根据主键查询User实例
  • entityManager.remove(user):删除User实例
  • entityManager.createQuery("SELECT u FROM User u", User.class).getResultList():查询所有的User实例

实现UserRepository接口后,即可以通过调用UserRepository中的方法来完成对User实例的CRUD操作了。

总结

本篇文章介绍了如何使用Spring Boot中的EntityManager来进行持久化操作。首先定义实体类,然后定义Repository接口,最后实现Repository接口。通过这些步骤,即可完成对数据库的CRUD操作。