| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Маппинг несколько класов на одну таблицу |
| Автор: diyko 25.3.2008, 12:34 |
например есть таблица сompany с каким то набором полей я хочу сделать класс CompanyShortInfo, класс CompanyInfo и класс CompanyFullInfo (CompanyInfo extends CompanyShortInfo CompanyFullInfo extends CompanyInfo ) з мапингом на одну таблицу Мне ето нужно потому что есть варианти когда не надо извлекать все поля компании а только два или три как наиболее коректно ето сделать? Или лучше с помощю лейзилоадинга? |
| Автор: Llucas 25.3.2008, 16:12 |
| Проще все в запросе явно указывать какие поля тебе нужно в каждой конкретной ситуации. Вообще ты можешь сделать основной класс.. К примеру у него будет ряд переменных и еще две переменные - классы которые ты хотел создать. Эти классы не должны быть extends а просто implements Cloneable, Serializable . В эти классы клади какие-ты хочешь переменные. |
| Автор: diyko 25.3.2008, 16:44 |
| Можно, но не очень красиво А что будет если просто сделать мапинг без каких либо дискриминаторов? С xml ето когдато работало |
| Автор: Llucas 25.3.2008, 16:50 |
| Здесь такое дело... если у тебя есть таблица и ты хочешь брать из нее ряд столбцов... разбей эту таблицу на 2 таблицы, свяжи их, сделай маппинг и работай с разными объектами... Что такое дискриминатор? |
| Автор: necromancer 25.3.2008, 17:25 |
| to Llucas господи, какие сложности =)))) есть ведь такая штука в базах, как синонимы, вьюшки и т.п. лабудень =) Добавлено @ 17:25 плюс ко всему посредством аннотаций у меня вполне нормально получилось замапить 2 класса на одну таблицу. Трудности начнутся при написании HSQL |
| Автор: Llucas 25.3.2008, 17:28 | ||||
necromancer, вообще не понял к чему ты это сказал...
Если хочешь использовать хибернейт, чтобы избежать трудностей с hql не надо так делать... |
| Автор: necromancer 25.3.2008, 17:30 | ||
| вопорс был? ответ был? а вот это вот
бред ИМХО такие решения не стоит предлагать, с учетом того что ВОПРОС стоял не как сделать 2 класса на 2!!! таблицы, а как 2 классана ОДНУ таблицу! Добавлено через 51 секунду насчет HSQL я о нем не шибко хорошего мнения. но это все субъективно |
| Автор: Llucas 25.3.2008, 17:45 |
| Вопрос стоит так что сам по себе уже предусматривает сложности в работе... Я говорю о том, что надо пересмотреть структуру БД или при выполнении запроса явно указывать поля - вот и все... Бреда тут нету. |
| Автор: necromancer 25.3.2008, 18:08 | ||
| теперь я отвечу за свои слова =) если в базе создать синоним то к таблице можно обращатся по 2-м разным именам. но это будет та же самая таблица. С вью впринципе тоже самое и даже update может проходить если не используется аггрегация и другие сложности.
Не всегда. Например есть строчка в бад имя и фото. при работе с одним классом Хибер будет тянуть и фото. что явно накладно. разбиваем работу с хибером на два класса по одному ключу - повышаем производителньость системы в разы. А структура базы полностью отражает сущность объекта. Или предлагаешь хранить имена и фото в разных таблицах + ключ + связывание + контроль целостности |
| Автор: diyko 25.3.2008, 18:28 | ||
Да ето именно такой случай наверное каждий раз тянуть фото накладно проще два класа к одной таблице какие проблеми могут бить с HQL Кто то знает точно? Разбивать на две таблици не хочеться также потому что логически ето все таки один обект |
| Автор: necromancer 25.3.2008, 18:41 |
| кстати вот не знаю можно ли сделать lazyLoad на поле и наверное в принципе можно создать фильтры. |
| Автор: iluvatar 26.3.2008, 09:14 |
| насколько я понял, вопрос здесь стоит как реализовать наследование нескольких классов, отображающих одну таблицу. |
| Автор: diyko 26.3.2008, 12:12 |
| В общем да і как верно их мапить |
| Автор: necromancer 26.3.2008, 14:50 |
| про наследование читаем документацию по Hibernat |
| Автор: diyko 26.3.2008, 15:51 |
| читал |