Ну не знаю, как по мне принцип единой ответственности и прочее, как и ТБ писаны кровью, чересчур вольное обращение с ними чревато.
По последнему пункту: если производительность не важна, то проекции созданные из интерфейсов хорошо зайдут. В противном случае будет больно, я писал отдельную статью о причинах этого.
Бенчмарк показывает существенную дороговизну проекций по сравнению с DTO
Понимаете, какая тут загогулина: фактические userDao.findById(userId) возвращает сущность (если я правильно понял userDao — это реализация JpaRepository).
Теперь представьте, что одним из свойств, входящих во множество, отдаваемое клиенту, является ленивой дочерней сущностью или @Lob. В этом случае мы получим LazyInitException с сообщением "No session", т.к. область действия транзакции прекращается по выходу из findById.
И тут одной из трёх: либо добавлять @Transactional на контроллер, что является грубейшим нарушением принципа разделения слоёв приложения, либо явно загружать ленивую сущность (нужно приседать с графами или явно прописывать fetch), либо возвращать не сущность, а DTO.
Поэтому идея кажется сомнительной, как и внедрение дао/репозиториев в контроллер.
Код в примере с EjbComponentAnnotationScanner очень странный: зачем там вообще нужно ленивое создание? Ради набора из 4 коротких и по умолчанию разных строк? Для этого вовсе не обязательно городить HashSet, Arrays.asList() будет легковеснее, а поиск строки в массиве длинной 4 скорее всего будет быстрее, чем вычисление хэш-кода, потом поиск нужной корзины и сравнение с находящейся там строкой. Объявив поле private volatile Set<String> annotations как private final List<String> annotations мы получим гарантированное безопасное создание и отсутствие волатильного доступа при чтении.
Населения республики на 1 января 2014 года составила 1 958 504 человека. "ООН в одном только 2015 году насчитали 800 тысяч внутренних переселенцев, большая часть — из Крыма" — это значит, что выехало не меньше 400 тыс, получается, ООН считает, что выехала 1/5.
А если мы возьмём данные украинских властей из википедии, то "В 2014—2016 годах, по данным украинских властей, со времени присоединения Крыма к России, с территории полуострова на Украину переселилось 22 437 человек", что составляет аж целых 1.15%.
Далее из вики: По данным украинских властей на 12 августа 2018 года на учёте в качестве «внутренне перемещённых лиц» стоят 33,5 тысяч лиц из Крыма, что составляет аж целых 1.71%.
получении украинского заграна с безвизом
Всё правильно делают, с паршивой овцы — шерсти клок :)
Спецназ и пулемёты — это юридическое подкрепление?
В той же степени, что и коктейли Молотова, горящие покрышки и дубинки.
Это вы про Крым? Не ошибся?
Не ошиблись, я много раз был там "до" и "после". Разница на лицо, а массовой эмиграции в "свободную и евроинтегрированную Украину" от "ужасов оккупации" почему-то не наблюдается. А ФМС украинских нелегалов время от времени выдворят, хотя казалось бы.
ВСУ многократно нарушил действующую конституцию при поддержке народа, ВС АРК сделал то же самое
Интервью читал, честь ему и слава. Обеспечил юридическое подкрепление воли народа, который не захотел более связывать своё будущее с Украиной. Последующие 6 лет убедительно показали, что народ не ошибся.
Я понимаю, что это для вас болезненный и неожиданный сюрприз, но что поделать — так и есть.
Две недели уже Навальный в Германии, а диагноз так и опубликован, следствие не окончено, но "для всех умных людей заказчик очевиден" (с)
Впечатление передоза или бытового отравления.
Ну не знаю, как по мне принцип единой ответственности и прочее, как и ТБ писаны кровью, чересчур вольное обращение с ними чревато.
По последнему пункту: если производительность не важна, то проекции созданные из интерфейсов хорошо зайдут. В противном случае будет больно, я писал отдельную статью о причинах этого.
Бенчмарк показывает существенную дороговизну проекций по сравнению с DTO
К слову, если в сканере аннотаций ввести ключевое слово
volatile
в объявлението явное присваивание нула (значение поля по умолчанию) нужно выбросить.
Понимаете, какая тут загогулина: фактические
userDao.findById(userId)
возвращает сущность (если я правильно понялuserDao
— это реализацияJpaRepository
).Теперь представьте, что одним из свойств, входящих во множество, отдаваемое клиенту, является ленивой дочерней сущностью или
@Lob
. В этом случае мы получимLazyInitException
с сообщением "No session", т.к. область действия транзакции прекращается по выходу изfindById
.И тут одной из трёх: либо добавлять
@Transactional
на контроллер, что является грубейшим нарушением принципа разделения слоёв приложения, либо явно загружать ленивую сущность (нужно приседать с графами или явно прописыватьfetch
), либо возвращать не сущность, а DTO.Поэтому идея кажется сомнительной, как и внедрение дао/репозиториев в контроллер.
С интернированием есть нюанс: и-ние с помощью
String.intern()
— это зло, см. https://youtu.be/SZFe3m1DV1A?t=1912Если очень нужно, то лучше взять самописное решение (есть по ссылке)
Рад, что советы оказались полезными :) Пользуйтесь!
Вот не надо так, даже в тестовых проектах лучше сразу вырабатывать привычку и писать в боевом режиме.
Получается, что котроллер фактически отдаёт наружу доменный объект, я правильно понимаю?
Если всё в одной транзакции, то большой разницы по идее быть не должно.
Код в примере с
EjbComponentAnnotationScanner
очень странный: зачем там вообще нужно ленивое создание? Ради набора из 4 коротких и по умолчанию разных строк? Для этого вовсе не обязательно городитьHashSet
,Arrays.asList()
будет легковеснее, а поиск строки в массиве длинной 4 скорее всего будет быстрее, чем вычисление хэш-кода, потом поиск нужной корзины и сравнение с находящейся там строкой. Объявив полеprivate volatile Set<String> annotations
какprivate final List<String> annotations
мы получим гарантированное безопасное создание и отсутствие волатильного доступа при чтении.Ликвибейз?
Ого, какой забористый трэш с "Крым.Реалии"
Населения республики на 1 января 2014 года составила 1 958 504 человека. "ООН в одном только 2015 году насчитали 800 тысяч внутренних переселенцев, большая часть — из Крыма" — это значит, что выехало не меньше 400 тыс, получается, ООН считает, что выехала 1/5.
А если мы возьмём данные украинских властей из википедии, то "В 2014—2016 годах, по данным украинских властей, со времени присоединения Крыма к России, с территории полуострова на Украину переселилось 22 437 человек", что составляет аж целых 1.15%.
Далее из вики: По данным украинских властей на 12 августа 2018 года на учёте в качестве «внутренне перемещённых лиц» стоят 33,5 тысяч лиц из Крыма, что составляет аж целых 1.71%.
Всё правильно делают, с паршивой овцы — шерсти клок :)
Все животные равны, но некоторые — более равные.
В той же степени, что и коктейли Молотова, горящие покрышки и дубинки.
Не ошиблись, я много раз был там "до" и "после". Разница на лицо, а массовой эмиграции в "свободную и евроинтегрированную Украину" от "ужасов оккупации" почему-то не наблюдается. А ФМС украинских нелегалов время от времени выдворят, хотя казалось бы.
ВСУ многократно нарушил действующую конституцию при поддержке народа, ВС АРК сделал то же самое
Интервью читал, честь ему и слава. Обеспечил юридическое подкрепление воли народа, который не захотел более связывать своё будущее с Украиной. Последующие 6 лет убедительно показали, что народ не ошибся.
Я понимаю, что это для вас болезненный и неожиданный сюрприз, но что поделать — так и есть.
Я предпочту принять на вооружение ваш тезис о том, что источником власти является народ, а не Конституция.
В обоих случаях не имел, но раз в первом случае воля народа важнее, то можно применить этот же подход ко второму случаю.
Решение приняли депутаты ВС АРК.
Конечно, декларация про суверенитет УССР была принята в 16.07.1990, но ещё более года она была частью СССР.