Я новичок в Hibernate. Я заметил, что в Hibernate отображение классов Java в таблицы базы данных часто включает таблицы отношений, даже иногда таблицы отношений не нужны (например, в отношении «один ко многим» или наоборот).
Например:
Я класс компании и класс полета, в котором у компании может быть много рейсов (ассоциация «один ко многим» от компании к рейсу).
У меня есть следующий код, использующий аннотации гибернации:
@Entity
@Table(name = "COMPANY")
public class Company {
@Id
private Long id;
@OneToMany
private Set<Flight> flights = new HashSet<Flight>();
......
getter and setter methods
......
}
@Entity
@Table(name="FLIGHT")
public class Flight{
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "COMP_ID")
private Company ownerCompany;
......
getter and setter methods
......
}
Классы успешно сопоставлены с базой данных. И есть три таблицы, а именно:
- КОМПАНИЯ (поле идентификатора)
- FLIGHT(поле ID и поле COMP_ID)
- COMPANY_MANY_TO_ONE_FLIGHT (два поля: MANY_TO_ONE_COMPANY_id и Flight_id )
Однако последняя таблица COMPANY_MANY_TO_ONE_FLIGHT является таблицей отношений, добавленной спящим режимом, что является избыточным.
Очевидно, что в таблице FLIGHT есть внешний ключ COMP_ID, и разумно удалить избыточную таблицу отношений.
И как мне избежать такого обстоятельства? Например, путем изменения аннотаций.