|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||
А не попрограммировать ли нам вместе?17.12.2015, 15:48. Показов 1875. Ответов 23
Метки нет (Все метки)
Всем привет, я собираюсь сделать памятку по юзанию спринга, хибернейта для новичков (без особых деталей и тонкостей, а вот собрать это вместе и заставить работать думаю сделаем). Но она довольно объемная, и боюсь у меня не хватит времени и терпения ее сделать зараз. Поэтому предлагаю заняться этим вместе.
От того кто захочет поучавствовать в этом "безобразии" требуется как минимум знаниее ООП и базовые знания SE. Задачу целиком сразу выкладывать не буду. Я разбил ее на несколько простых действий и в процессе ее будем усложнять. Еще раз повторюсь что расчитано на новичков, которым нужен толчек для старта на покорение ЕЕ. Однако советы опытных коллег лишними тоже не окажутся =). Итак.
![]() Часть 2 github Часть 3 github
9
|
||
| 17.12.2015, 15:48 | |
|
Ответы с готовыми решениями:
23
Остались еще готовые попрограммировать на ASP + VB + MSSQL Запуск ПК, а вместе с ним и google chrome вместе с вкладкой akisho Не работают вместе 2 скрипта вместе |
|
http://1248.site
|
|
| 17.12.2015, 22:17 | |
|
reisal78, я тут ответ писал в аналогичную тему , возможно ли проект сделать в виде github репозитория, лично для меня было бы крайне интересно работать с Saros плагином к эклипсу. Но я не привередлив, так что я в теме.
0
|
|
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||
| 17.12.2015, 22:39 [ТС] | ||
|
RinatV, увы, моя душа продана IntelliJ IDEA =)
Тем более для того что я задумал кода не так уж и много будет...
1
|
||
|
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
|
||||||
| 18.12.2015, 13:39 | ||||||
|
Хм, начну, что ли. Если я правильно понял, то, допустим, класс Customer выглядит как-то так?
Кликните здесь для просмотра всего текста
0
|
||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||||||
| 18.12.2015, 13:45 [ТС] | ||||||
|
Я понимаю что данная часть совсем для новичков и скучна, но давайте все же вместе подумаем...
С классом Customer вроде все понятно. Кликните здесь для просмотра всего текста
А вот как быть с классом Order? в нем нужно хранить продукты и их количество, в заказе. Как хранить будем?
0
|
||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
|||||||
| 18.12.2015, 13:58 [ТС] | |||||||
|
Alradalion, вы меня немного опередили.
По вашему варианту:
И если уж использовать List, то лучше объявить ее как List<Order> , это в будущем позволит там использовать разные реализации листа, если будет в этом необходимость. Добавлено через 5 минут
0
|
|||||||
|
|
||||||
| 18.12.2015, 14:33 | ||||||
|
reisal78, у заказа помимо продуктов и их количества должен быть уникальный номер.
0
|
||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||
| 18.12.2015, 14:44 [ТС] | ||
|
Я вот что подумал то... Но ведь в заказе помимо товара, количества есть же еще цена. А ее где сохраним?
0
|
||
|
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
|
||||
| 18.12.2015, 15:17 | ||||
|
Что если использовать в Map'е не products, а еще один класс - "Подробности заказа", в котором и хранить количество товара, стоимость, допустим, скидку и так далее
0
|
||||
|
|
||
| 18.12.2015, 17:16 | ||
|
reisal78, Alradalion, блин в голове сейчас куча идей, которые нужно привести в порядок. Как справлюсь, попробую выложить код для этих трех классов.
Добавлено через 1 час 11 минут
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 18.12.2015, 17:20 | |
|
Я бы на вашем месте изменил подход к задаче. Вы бросились писать код без понимания того, какую проблему вы хотите решить. Вам нужно определится с функионалом системы и требованиями. Затем написать дизайн и UML и только потом писать код. Сейчас в ваших релизациях уже есть некоторые проблемы и недостатки. Если будите кидать кусаи кода, качественно вряд ли выдет
0
|
|
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
|
| 18.12.2015, 19:49 [ТС] | |
|
KEKCoGEN, Да я на самом деле планировал все несколько проще, набросать несколько сущностей, создать дао, сервисы продемонстрировать внедрение зависимостей сконфигурировать все это безобразие без xml да показать Jpа репозиторий.
Добавлено через 17 секунд а ну и как мапить разные связи.
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 19.12.2015, 23:05 | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
Обычно, связанность классов стараются уменьшить, вынося связи в другие места.
Например, так: Domain
Customer
Order
Product
Как можете заметить, классы не зависят друг от друга на прямую, только через id. Ни агрегации, ни наследования. Почему? Сложный ответ -- потому что это уменьшает связанность. Простой ответ -- потом со столь сложными классами будет затруднительно работать. Избыточность чтения данных и т.д. и т.п. Соответственно, связь происходит на других уровнях. Например, дао: Dao
Customer
Order
Product
Разбивка на Source и Dao сделана обычно для того, чтобы избежать избыточной связанности, плюс таким образом можно удобно показать, что данные не будут модифицироваться. Скорее всего в вашей задаче не обязательно так делать. Добавлено через 6 минут В дальнейшем, если нужна какая-либо информация, создаётся фасад, собирающий данные воедино. Например: CustomerOrders
(Названо сервисом исключительно в силу привычки.)
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
|
| 20.12.2015, 08:47 [ТС] | |
|
lemegeton, а в чем преимущества .Builder builder?
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 20.12.2015, 12:33 | |
|
Использование Builder'ов является явным указанием отличия сохранённого в базе объекта от ещё не созданного. (Ну и когда проекту десяток лет, наличие билдеров при создании чего-нибудь закостыленного -- как глоток свежего воздуха.)
Когда нужно вызывать OrderDao#create(Order) по сигнатуре не слишком понятно, как создать объект Order и какого поведения ожидать от вызова. Какой ключ назначить передаваемой сущности? Не превратится ли create в update если я передам Order с уже готовым ключом? На тёмной стороне такого решения -- его многословность и несовместимость с JPA. В принципе, использование билдера не обязательно, а в случае работы с JPA еще и не желательное.
1
|
|
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||
| 20.12.2015, 14:50 [ТС] | ||
|
lemegeton, с этой стороны я об этом не размышлял.
@ALL к следующему шагу перейдем в понедельник.
1
|
||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||
| 20.12.2015, 21:55 | |||
|
JPA реализации вроде hibernate элегантно обходят эту проблему предоставляя только save, который по-сути createIfExistsUpdate. Однако подобная элегантность оборачивается низкой производительностью и усложнённой поддержкой.
0
|
|||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 22.12.2015, 14:08 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ну ладно, раз не хотите принимать активного участия, то я тоже немного упрощу задачу... =)
Забываем про заказчиков заказы и тд. Пример будет проще. Фильмотека. Определим сущности: Режиссер (Producer) - у режиссера может быть несколько фильмов Фильм (Film) - в фильме могут сниматься несколько актеров. Актер (Actor) - один актер может сниматься в нескольких фильмах. Персональная информация (PersonalInformation) - у актеров и режиссеров есть Имя, Фамилия и дата рождения. Можно было это вынести это вещи в супер класс от которого унаследовались бы актеры и режиссеры, но я сделаю так, что показать как это все будет ложиться в базу данных. Подробная информация (FilmDetails) - у каждого фильма есть подробная информация. Функционал: Создать фильм, режиссера, актера. Отредактировать фильм, режиссера, актера. Удалить фильм, режиссера, актера. Поиск всех фильмов режиссера. Поиск всех фильмов с актером. Код: Cущности
Ну и сама программа:
Поэтому мы наше приложение разделим на несколько слоев. Один слой это будет слой DAO, который будет обеспечивать сохранение объектов. Другой слой будет слой сервисов, который будет от интерфейса принимать данные, собирать их в нужные объекты, и используя слой DAO получать или сохранять их. Итак создадим сервис, и дао класс (что бы не тратить время на реализацию дао, я сделаю заглушку которая будет сохранять объекты в колекции в память(На следующем шаге подменим реализацию на сохранение в БД)) Я сделаю сейчас только маленькую часть, остальные реализации жду от вас. (ниже будет ссылка на гитхаб, форкайте,реализуйте и пульте). Для каждой сущности должен быть свой отдельный dao и service классы. И соответсвенно все это безобразие делается через интерфейсы. Почему. Пример для сущности режиссер: DAO
Service
От вас доделать дао и сервисы. (Для повторяющихся методов дао можно прикрутить суперкласс с женериками) Проект на гитхабе github
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 23.12.2015, 17:44 | |
|
Не по теме: ждем Часть 3 :)
0
|
|
| 23.12.2015, 17:44 | |
|
Помогаю со студенческими работами здесь
20
К нам пришла проверка? вики нам поможет Машина Тьюринга и НАМ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|