Так какой подход правильный / лучший?
лизовал двунаправленную ассоциацию OneToMany с использованием аннотаций гибернации. Я видел много примеров в Интернете и читал, что атрибут mappedBy должен быть указан на стороне OneToMany ассоциации. (Я смотрел на пример здесь -https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/) Однако пример кода, который я написал без использования атрибута mappedBy, работает отлично. Вот мой код:
@Entity
@Table(name="Cart")
public class Cart {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="cart_id")
private List<Item> items;
//getters and setters
}
Ниже приведен класс Item:
@Entity
@Table(name="Item")
public class Item {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private Cart cart;
//getters and setters
}
Следующий код сохраняет данные:
public static void saveCart(Session session){
Transaction tx = session.beginTransaction();
Cart c1 = new Cart();
c1.setName("Cart 1");
Item item1 = new Item();
item1.setName("item1");
Item item2 = new Item();
item2.setName("item2");
List<Item> items = new ArrayList<Item>();
items.add(item1);
items.add(item2);
c1.setItems(items);
session.save(c1);
tx.commit();
}
Этот код не использует атрибут mappedBy и работает нормально, данные правильно сохраняются в таблицах. Так ли мой подход правильный? В примере наhttps://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ атрибут mappedBy используется с аннотацией OneToMany, а JoinColumn указывается с аннотацией ManyToOne.
Так какой подход правильный / лучший?