Одной из сильных сторон объектного моделирования предметной области заключается в возможности создавать двунаправленные связи между родительскими и дочерними объектами. Так, если пользователю может соответствовать несколько адресов, то не только класс Address будет содержать поле Person, к которому конкретный адрес относится, но и класс Person может содержать список типа Address со всеми относящимися к нему адресами.
В реляционных базах данных невозможно точно воспроизвести такие отношения. Но Hibernate снимает это несоответствие, позволяя разработчику создавать двунаправленные отношения в объектной модели в Java, продолжая сохранять данные в реляционной модели в БД.
Читать далее