|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
||
А не попрограммировать ли нам вместе?17.12.2015, 15:48. Показов 1853. Ответов 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
К нам пришла проверка? вики нам поможет Машина Тьюринга и НАМ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|