如何将许多对象持久化到数据库?

时间:2019-12-11 14:53:00

标签: java hibernate jackson

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

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

Genre.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文件持久保存到db的地方。

1 个答案:

答案 0 :(得分:0)

如果您使用的是“香草” EntityManager,则必须遍历集合:

listGenre.forEach(entityManager::persist);

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

genreRepository.saveAll(listGenre);