KriegeR
@KriegeR
Software Engineer

Hibernate. Для чего нужны коллекции связей?

Привет, Хабр!

Когда рылся в чужом коде, частенько вижу подобную структуру (тут, например):
<set name="busses" lazy="false">
   <key column="route_id"/>
   <one-to-many class="logic.Bus"/>
</set>


* This source code was highlighted with Source Code Highlighter.

Что «оно» делает, я знаю — везде расписано по тысячу раз. Интересует, зачем это надо? Ведь вроде нормально можно работать и без этих связей. Это как-то упрощает функционал или без этого вообще работать нельзя?

Всех заранее благодарю за проявленное участие.
  • Вопрос задан
  • 2959 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ganesh
@Ganesh
Перед тем, как изучать Hibernate, лучше сначала ознакомиться с самим SQL, тогда вам станет много понятнее, да и у Hibernate есть приличный мануал, которого с лихвой хватит, чтобы начать работать фрэймворком
Ответ написан
@antalus
Для того чтобы Hibernate делал join-ы и подзапросы за вас. Т.е. вы как всегда работаете с обьектами:
вызываете route.getBusses() для получения списка автобусов текущего маршрута, потом можете изменить этот Set как того требует бизнес-логика — все автоматически сохранится в базе. То есть такие маппинги — обычная практика для ORM.

Вместо того чтобы вызывать отдельный DAO метод который вытащит список автобусов по id маршрута и потом сохранять возможные модификации этого списка опять же вызовом еще какого-нибудь метода.

Можно работать и без этих связей — но тогда зачем вам ORM? Если считаете что Hibernate делает за вас «слишком много» — советую обратить внимание на myBatis www.mybatis.org/, вводный цикл статей java.dzone.com/articles/getting-started-ibatis-mybatis
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы