JPA запись отношений между сущностями
Для запроса сущностей из БД используем EntityManager. Его можно получить 2 способами:
1)
@PersistentContext(unitName = "xxx")
private EntityManager em;
2)
@PersistentUnit
private EntityManagerFactory emf;
@Resource
private UserTransaction userTransaction;
Отношения между сущностями записывается через аннотации. Обычно в базе данных отношения являются однонаправленными. Они делаются через внешние ключи. В JPA мы сможем даже однонаправленное отношение представить как двунапрвленное. Для этого в обоих сущностях указываем аннотации.
Один к одному
На одной стороне:
@OneToOne
@JoinColumn (name="имя поля с внешним ключом")
private Customer customer;
На другой стороне:
@OneToOne(mappedBy="customer")
private LoginInfo loginInfo;
Отношение один ко многим
@ManyToOne
@JoinColumn(name="поле с внешним ключом")
private Customer customer
На другой стороне
@OneToMany(mappedBy="customer")
private Set orders
Отношение многие ко многим
Отношение многие ко многим строится из 3 таблиц. Например OREDER, ORDERS_ITEMS, ITEMS, где ORDERS_ITEMS является связующей и содержит два поля каждое из которых является внешним ключом на две другие таблицы. Эти два поля обычно составляют составной первичный ключ связующей таблицы.
@ManyToMany
JoinTable(name="ORDER_ITEMS", JoinColumns = @JoinColumns(name = "ORDER_ID", referenceColumnName = "ORDER_ID"), inverseJoinColumns = @JoinColumn(name = "ITEM_ID", referenceColumnName = "ITEMS_ID"))
private Collection- items
В сущности Items описание сокращенное, так как есть в Order
@ManyToMany
private Collection orders
|