|
|
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, делаю простое приложение для работы с БД. Таблица Работник(id,имя,фамилия, должность, филиал) Таблица филиал(id,филиал) Таблица должность(id,должность) Модель соответственно: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Есть интерфейс EmployeeDao и реализация этого интерфейса. Вопрос вот в методе findAll я делаю простой запрос Код: plsql 1. И получаю соответственно 1 Вася Пупкин 1 1 Чтобы вывести непосредственно значения из других таблиц по id как правильно это реализовать? Я вижу два варианта делать отдельно DAO для должности, филиала и в DAO работника держать объекты их. Или сделать просто сложный запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 16:00 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Связать Работника с Филиалом и Должность в Enity @OneToMany ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 16:20 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
-=Koba=-, через JDBC делаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 16:25 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscИли сделать просто сложный запрос? делать под VIEW. Если простой просмотр на страничке, то Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 17:10 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_msc-=Koba=-, через JDBC делаю Очень зря. Spring Data + JPA сильно упростят код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 17:13 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczОчень зря. Spring Data + JPA сильно упростят код. Согласен, делаю в качестве обучения, Spring контейнер использую. Цель сделать сначала через JDBC, потом подтянуть ORM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 17:14 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscBlazkowiczОчень зря. Spring Data + JPA сильно упростят код. Согласен, делаю в качестве обучения, Spring контейнер использую. Цель сделать сначала через JDBC, потом подтянуть ORM Если ч/з JDBC, то создаете нужный вам запрос, который кладете в POJO класс. Т.е. как бы проблемы совсем нет. Главное знать SQL. После того, как научитесь писать запросы ORM покажется вам смирительной рубашкой. :-) А так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 07:38 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, Спасибо, по делу всё. Коллеги, подскажите еще момент. Правильно ли я понимаю можно использовать два подхода 1) JDBC, здесь всю логику отдаём запросам, и классы будут простые 2) JPA, здесь вся логика уходит на классы, маппируем классы на таблицы, и вся основная работа с объектами java происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:35 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscПравильно ли я понимаю можно использовать два подхода 1) JDBC, здесь всю логику отдаём запросам, и классы будут простые 2) JPA, здесь вся логика уходит на классы, маппируем классы на таблицы, и вся основная работа с объектами java происходит Нет. JDBC это просто интерфейс работы с БД. Он не диктует где именно вы держите логику, в Java или в БД. Если уж держать логику в БД, то точно не в SQL запросах, запускаемых JDBC, а в хранимых процедурах и функциях, на языке который плохо масштабируется и крайне ограничен. Вы бы это. Фаулера что ли почитали. Enterprise Patterns. Масса подобных вопросов отпала бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:42 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЕсли уж держать логику в БД, то точно не в SQL запросах, запускаемых JDBC, а в хранимых процедурах и функциях, на языке который плохо масштабируется и крайне ограничен.... в неумелых и/или кривых руках. Не могут встроенные возможности СУБД масштабироваться хуже или лучше самой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:52 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы бы это. Фаулера что ли почитали. Enterprise Patterns. Масса подобных вопросов отпала бы. Спасибо за рекомендацию, обязательно займусь, потому что с пониманием архитектуры есть большие проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:00 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovв неумелых и/или кривых руках. Не могут встроенные возможности СУБД масштабироваться хуже или лучше самой СУБД. Масштабирование данных и выборки и масштабирование рантайма это совсем разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:02 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, т.е. как посоветовал mad_nazgul это неверно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:03 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscт.е. как посоветовал mad_nazgul это неверно? Что именно там не верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:08 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov... в неумелых и/или кривых руках. Не могут встроенные возможности СУБД масштабироваться хуже или лучше самой СУБД. Могут. Не всякая СУБД позволяет во встроенном процедурном ЯП устраивать многопоточные вычисления. А уж о механизме кеширования/инвалидации результатов запросов использующих вызовы определенных пользователем функций обрабатывающие данные внутри СУБД можно забыть почти сразу. Часто использование не SQL ЯП требует еще и дополнительных накладных расходов. Причем часто для доступа к данным из такого ЯП нужно опять задействовать SQL. В общем далеко не серебрянная пуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:14 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЧто именно там не верно? Что один класс вместо трех. И запросом всё пихаем в один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:32 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
mad_nazgulА так: А мне последнее время нравится такое DAO Код: java 1. ну и геттеры и сеттеры. :) плюс универсальный метод чтения (из RowSet)-записи в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:39 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscBlazkowiczЧто именно там не верно? Что один класс вместо трех. И запросом всё пихаем в один. Аа. Не заметил сразу. Да. Это не верно. Нет смысла ломать свои бизнес-объекты. Никто не мешает результаты одного запроса разложить по дереву объектов. Запросы это такая штука, которая подвержена изменениям с ростом БД из-за необходимости оптимизаций. Шанс что запрос нужно будет менять - очень велик. Но не будем же мы перепиливать всю модель предметной области из-за этого. Просто модель будет конструироваться иначе. Современные ORM эту проблему решают очень элегантно. Хотим JOIN - получаем JOIN. Хотим несколько SELECT - так и указываем при выборке. Нет необходимости ни менять модель, ни переписывать запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:44 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Код: java 1. ну и геттеры и сеттеры. :) плюс универсальный метод чтения (из RowSet)-записи в БД. Точно, люто плюсую, т.к. я это делаю уже лет этак 5+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:45 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевmad_nazgulА так: А мне последнее время нравится такое DAO Код: java 1. ну и геттеры и сеттеры. :) плюс универсальный метод чтения (из RowSet)-записи в БД. Это не DAO. Идея хранить данные в мапах не нова. Но про комбинацию со строго типизироваными свойствами я ещё не слышал. Любопытно было бы посмотреть. Самая большая проблема тут (ИМХО) в том что подобная модель будет совершенно анемичной. Писать логику на Map совсем грустно. Соответсвтенно вы её будете писать снаружи, нарушая инкапсуляцию. Есть и несколько проблем поменьше - это рефакторинг и перенос ряда ошибок из compile time в run time. Интересно было бы посмотреть на то как происходит работа с ассоциациями. В том числе при апдейтах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:02 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, т.е. правильно ли я понимаю: у меня три класса: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Запрос будет такой же как и предложил mad_nazgul но добавятся в выборке position.id , branch.id и уже в RowMapper я создаю три объекта Branch , Position , Employee и заполняю полями из запроса. Так я понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:13 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
slavik_mscТак я понимаю? Да. А про jOOQ читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:16 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДа. А про jOOQ читали? К сожалению нет, сейчас почитаю, Спасибо вам большое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:21 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
Blazkowiczslavik_mscТак я понимаю? Да. А про jOOQ читали? А вам хватает бесплатной версии или вы использовали профешнл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:41 |
|
||
|
Архитектура DAO
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЭто не DAO. Идея хранить данные в мапах не нова. Но про комбинацию со строго типизироваными свойствами я ещё не слышал. Любопытно было бы посмотреть. Самая большая проблема тут (ИМХО) в том что подобная модель будет совершенно анемичной. Писать логику на Map совсем грустно. Соответсвтенно вы её будете писать снаружи, нарушая инкапсуляцию. Есть и несколько проблем поменьше - это рефакторинг и перенос ряда ошибок из compile time в run time. Интересно было бы посмотреть на то как происходит работа с ассоциациями. В том числе при апдейтах. +100500. Уж лучше ActiveRecord в таком случае. Зачем нужен строготипизированный язык если всю логику писать на мапах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39382140&tid=2123267]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 384ms |

| 0 / 0 |
