Как добавить записи в две таблицы в Hibernate?

Для добавления записей в две таблицы с использованием Hibernate в Java, мы можем воспользоваться связью между таблицами с помощью аннотаций и использовать транзакции для обеспечения согласованности данных.

Предположим, у нас есть две таблицы, "Table1" и "Table2", и у них есть отношение один-к-одному. Мы хотим добавить записи в обе таблицы одновременно.

Сначала мы должны создать два класса-сущность для каждой таблицы, которые будут отображать структуру таблиц в нашем приложении. Для каждого класса мы должны добавить соответствующие аннотации Hibernate, которые определяют связи между таблицами. Например:

@Entity
@Table(name = "Table1")
public class Table1 {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_table1")
    private int id;

    @OneToOne(mappedBy = "table1", cascade = CascadeType.ALL)
    private Table2 table2;

    // ... остальные поля и методы

}


@Entity
@Table(name = "Table2")
public class Table2 {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_table2")
    private int id;

    @OneToOne
    @JoinColumn(name = "id_table1")
    private Table1 table1;

    // ... остальные поля и методы

}

В приведенном выше примере мы использовали аннотации @OneToOne и @JoinColumn, чтобы определить отношение один-к-одному между Table1 и Table2. Аннотация @OneToOne указывает на то, что связь является один-к-одному, а аннотация @JoinColumn определяет столбец, который используется для связи таблиц.

Теперь мы можем добавить записи в обе таблицы, создав экземпляры классов-сущностей и сохраняя их в базе данных. Например:

Table1 table1 = new Table1();
Table2 table2 = new Table2();

// устанавливаем связь между таблицами
table1.setTable2(table2);
table2.setTable1(table1);

// сохраняем записи в базе данных
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();

session.save(table1);
session.save(table2);

transaction.commit();
session.close();

В приведенном выше примере мы создаем экземпляры классов Table1 и Table2, устанавливаем связь между ними и сохраняем их в базе данных с помощью метода save объекта Session. Затем мы коммитим транзакцию с помощью commit и закрываем сессию.

В результате, записи будут добавлены и связаны в обе таблицы в базе данных.