Оптимизировать код по сохранению Entity

162
18 апреля 2019, 12:50

Имеются две Entity, ссылающиеся друг на друга соответствующими полями отмеченными аннотациями

@Entity
Player {
    @OneToOne
    private User user;
}
@Entity
User{
    @OneToOne
    private Player player;
}

Как возможно упростить код по сохранению?

try (Session session = cfg.buildSessionFactory().openSession())
{
    session.beginTransaction();
    Player player = user.getPlayer();
    session.save(player);
    session.save(user);
    player.setUser(user);
    session.save(player);
    session.getTransaction().commit();
    session.close();
}

Уверен, что это возможно, а то хоть у меня и работает, но дюже не красиво...

Answer 1

После нескольких экспериментов пришло такое решение

в User чуть изменить поле player:

private Player player = new Player();

тогда при сохранении объектов, код можно сделать в две строчки:

try (Session session = cfg.buildSessionFactory().openSession())
{
    session.beginTransaction();
    session.save    ( user );
    user.getPlayer().setUser(user);
    session.getTransaction().commit();
    session.close();
}

Используется тот факт, что пока сессия не закрыта изменения объектов "автоматом" заносятся в базу (и это дополнительно описывать не нужно)

READ ALSO
Telegram API получить список чатов

Telegram API получить список чатов

Я делаю клиент для Telegram на Java с использованием официальной библиотеки TDLib, те

136
Проверить что bean был создан и не null

Проверить что bean был создан и не null

Есть ли какой способ проверить что бин был создан? с помощью аннотации а не простым if

161
Где покупается лицензия на шрифт?

Где покупается лицензия на шрифт?

Скажите, пожалуйста

175
Почему при выводе на печать не срабатывают стили css?

Почему при выводе на печать не срабатывают стили css?

Проблема в том, что от сюда http://siteru/css/table

172