java - 如何将多个对象持久化到数据库?

标签 java hibernate jackson

我的目标是从 json 文件创建许多 java 对象,然后将这些对象放入我的数据库中。我不确定如何将许多对象放入 persist 方法中,因为 persist 方法只接受实体。 我是java新手,实际上我不知道这是否有意义以及是否可以实现。 Json 文件:

[
  {
    "id": 1,
    "name": "Drama"
  },
  {
    "id": 2,
    "name": "Horror"
  },
  {
    "id": 3,
    "name": "Mystery"
  }
]

流派.class

@Entity
@Table(name = "GENRE")
public class Genre {

    @Id @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "name", nullable = false)
    private String name;

    public Genre() {}
    //setters getters
}

主要

class Main {

    public static void main(String[] args) {

        ObjectMapper objectMapper = new ObjectMapper();

        EntityManager entityManager = null;

        EntityManagerFactory entityManagerFactory = null;

        try {

            entityManagerFactory = Persistence.createEntityManagerFactory("hibernate-dynamic");

            entityManager = entityManagerFactory.createEntityManager();

            entityManager.getTransaction().begin();

            List<Genre> listGenre = objectMapper.readValue(new File("D:\\genre.json"), new TypeReference<List<Genre>>(){});


            entityManager.persist(???);

            entityManager.getTransaction().commit();

            entityManager.close();

        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
        } finally {
            entityManagerFactory.close();
        }

    }

}

我不知道“???”中该填什么将所有这 3 个对象从 json 文件持久保存到数据库的位置。

最佳答案

如果您使用“vanilla”EntityManager,则必须循环访问集合:

listGenre.forEach(entityManager::persist);

使用spring时,可以使用saveAll方法:

genreRepository.saveAll(listGenre);

关于java - 如何将多个对象持久化到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59288443/

相关文章:

java - 有或没有 javax.swing.text.Document

java - Spring boot服务API启动时出现异常(值为 'ServletContext resource [/dbo]'的属性spring.datasource.schema无效)

java - 找不到 resources/hibernate.cfg.xml

java - 使用 Map 对 Java 对象进行 jackson 序列化?

java - 覆盖全局 jackson 配置

java - JPA:PersistenceException,无法更新

Java加密文件数据并将其写入同一个文件

java - 如何在添加项目时动态调整列表的大小?

c# - hibernate 多个 winforms 应用程序

java - Jackson ObjectMapper忽略所有没有注释的属性