Как сохранить много объектов в базе данных? - PullRequest
1 голос
/ 11 декабря 2019

Моя цель состоит в том, чтобы из файла 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
}

Main

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 в БД.

1 Ответ

0 голосов
/ 11 декабря 2019

Если вы используете «ваниль» EntityManager, вам придется перебрать коллекцию:

listGenre.forEach(entityManager::persist);

При использовании пружины вы можете использовать метод saveAll:

genreRepository.saveAll(listGenre);
...