Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate мапинг 
:(
    Опции темы
4epT
Дата 25.3.2011, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Здравствуйте! Изучаю Hibernate.... имеется такая структура таблиц: Факультет и Кафедра. То есть связь тут один ко многим (один факультет может иметь много кафедр).

Сущность факультет:
Код

@Entity
@Table(name = "faculty", catalog = "st", schema = "")
public class Faculty implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;
    
    @Column(name = "faculty")
    private String faculty;

.....


Сущность Кафедра:
Код

@Entity
@Table(name = "chair", catalog = "st", schema = "")
public class Chair implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;

    @Column(name = "chair")
    private String chair;

    @Column(name = "idFaculty")
    @ManyToOne
    @JoinColumn(name="faculty")
    private Integer idFaculty;

...


Правильно ли я сделал мапинг ? Может в сущности факультета стоит добавить поле List<Chair> ?

Буду признателен, если Вы напишите как бы вы это сделали =)

Заранее спасибо!

P.S. может у кого нибудь есть простой, но в тоже время профессиональный проект с применением hiberante ? буду рад поразбираться на его примере ) 

Это сообщение отредактировал(а) 4epT - 25.3.2011, 02:06
PM MAIL   Вверх
LSD
Дата 25.3.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Цитата(4epT @  25.3.2011,  01:53 Найти цитируемый пост)
Правильно ли я сделал мапинг ?

Тебе видней. Напиши тест который будет читать/писать данные и сразу будет видно.


Цитата(4epT @  25.3.2011,  01:53 Найти цитируемый пост)
Может в сущности факультета стоит добавить поле List<Chair> ?

Обычно - добавляют.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
4epT
Дата 25.3.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



А анотации типа: @ManyToOne и подобные, ставятся на поля "объекты" или можно вешать и на индексы ? Я имею ввиду как правильно, понятно что можно повесить на любое поле ...

и еще в чем разница когда анотации вешают на get методы или на поле ? 
PM MAIL   Вверх
Samotnik
Дата 26.3.2011, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



4epT, на мой взгляд всё верно.
Цитата(4epT @  25.3.2011,  01:53 Найти цитируемый пост)
Может в сущности факультета стоит добавить поле List<Chair>

обычно это делают для OneToMany связи
PM MAIL   Вверх
LSD
Дата 4.4.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Цитата(4epT @  25.3.2011,  20:12 Найти цитируемый пост)
А анотации типа: @ManyToOne и подобные, ставятся на поля "объекты" или можно вешать и на индексы ?

Про какие индексы идет речь?



Цитата(4epT @  25.3.2011,  20:12 Найти цитируемый пост)
и еще в чем разница когда анотации вешают на get методы или на поле ?

Разница в том, что будет использовать Хибернейт для чтения/запись данных в поле - прямой доступ к полю и аксесор.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
4epT
Дата 4.4.2011, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Под индексом имеется ввиду колонка в таблицы БД. например у таблицы "Города" есть поле/колонка idCountry вот это я имею ввиду индекс =)

Можно сделать его int, и замапить ... либо сделать его именно объектом сущности Country.
PM MAIL   Вверх
Embedded
Дата 4.4.2011, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 22.2.2011
Где: Россия

Репутация: 1
Всего: 1



4epT, 
Мне почему-то кажется, что когда вы делали описанные Вами  в первом посте сущности, Вы думали о них как будто они таблицы в БД.

Цитата

Под индексом имеется ввиду колонка в таблицы БД. например у таблицы "Города" есть поле/колонка idCountry вот это я имею ввиду индекс =)

Отвыкайте от терминов типа колонка, пишите поле и id  называйте id (идентификатор) для понятности.

п.с.
Может вам поможет сей пример как пользоваться Eclipse но попутно там рассказывается о двух сущностях, причем одна содержит другую
http://www.ibm.com/developerworks/ru/edu/o...1/section5.html

Это сообщение отредактировал(а) Embedded - 4.4.2011, 17:51
PM MAIL   Вверх
LSD
Дата 6.4.2011, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Цитата(4epT @  4.4.2011,  15:39 Найти цитируемый пост)
Под индексом имеется ввиду колонка в таблицы БД. например у таблицы "Города" есть поле/колонка idCountry вот это я имею ввиду индекс =)

Можно сделать его int, и замапить ... либо сделать его именно объектом сущности Country. 

Универсального ответа как поступать с таким связями - нет. Можно замапить энтити с ленивой подгрузкой (наиболее общеупотребительный способ), можно с жадной загрузкой (для небольших объектов, которые не имеют смысла без родительского), можно оставить ID-шники как есть, меньше проблем с кешированием и можно будет сэкономить на DTO smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
4epT
Дата 7.4.2011, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата(LSD @ 6.4.2011,  16:36)
Цитата(4epT @  4.4.2011,  15:39 Найти цитируемый пост)
Под индексом имеется ввиду колонка в таблицы БД. например у таблицы "Города" есть поле/колонка idCountry вот это я имею ввиду индекс =)

Можно сделать его int, и замапить ... либо сделать его именно объектом сущности Country. 

Универсального ответа как поступать с таким связями - нет. Можно замапить энтити с ленивой подгрузкой (наиболее общеупотребительный способ), можно с жадной загрузкой (для небольших объектов, которые не имеют смысла без родительского), можно оставить ID-шники как есть, меньше проблем с кешированием и можно будет сэкономить на DTO smile

А можно какой нибудь пример с ленивой подгрузкой ?) И чем чревато если вообще не делать такой мапинг ? а всеми такими связями рулить вручную .... =)
PM MAIL   Вверх
LSD
Дата 7.4.2011, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Примеры есть в доке по хиберу просто в @OneToMany добавится один элемент
Код

@OneToMany(
            targetEntity = Policy.class,
            fetch = FetchType.LAZY,
            cascade = CascadeType.ALL,
            mappedBy = "user"
)



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.