А як бути, якщо хочеться на фронт передавати різні DTO однієї ентіті з контролера? В SpringDataRest як раз projections забезпечують варінт віддати таку дто, або іншу тільки по суті передачею імені projection як get параметр. В простому контроллері треба під кожний варіант писати смій метод? Чи можна якось також параметром передати з фронта, як в відео в репозиторій прокидували класс?
@@Bobocode скорше пару речень, на скільки тема з репозиторієм широка. У Фаулера окрім визначення майже немає коду. Він одразу переходить до QueryObject і Criteria, хоча репозиторій може бути і без них, як описує Еванс у ДДД (Фаулер на нього часто ссилається). Мене визначення по Фаулеру сильно збило у свій час, ніби репозиторій - то просто CRUD, через collection-like операції. Головна ж domain model, з*являється різниця між DAO і Repository. Цей паттерн дуже крутий, кочує між різними мовами і фреймворками. Але у Фаулера він описаний по Хібернейту) Треба починати свої відео робити
Щодо findAll. На багатьох проектах бази були великі. І викликати findAll() або count() означало моментальний гнів девопсів. Пул забивається, запит іде пару хвилин, і особливо нічого я зробити не можу. Щойно побачив ще findAll(sort) - це за межами добра і зла( Чому такі небезпечні операції є в стандартному інтерфейсі Repository?
@@mykhailomolnar2432 робив і пагінацію, і seek method, і стримінг. Дивлячись до була за задача. З count може бути трохи простіше, бо в деяких базах є на кшталт приблизний count (mongo). Якщо не помиляюся, MySQL, Elastic такий запит переварять легко. З Postgres були питання. Так, зазвичай був eplain analyze, після того яr на проді моніторилися і логувалися найбільш довгі запити.
Довго не міг зрозуміти чому у мене немає distinct і не дублюються Persons - тут ua-cam.com/video/aJulegjqWEw/v-deo.html Виявилось, що залежить від версії спрінга (тепер більш пізня версія є і Jakarta мабуть це врахувала)
Привіт. Так, дякую, що підмітили. Це насправді залежить від версії Hibernate. *From Hibernate ORM 6, distinct is always passed to the SQL query and the flag QueryHints**#HINT_PASS_DISTINCT_THROUGH** has been removed.* Тут можна прочитати більш детально: docs.jboss.org/hibernate/orm/6.0/migration-guide/migration-guide.html#query-sqm-pass-thru
👉 Навчання від Bobocode: bit.ly/3IRrJhj
Класне відео! Радий що знімаєте ! Не зупиняйтесь (шукав українсько-мовний контент по java дуже довго)
Дуже круте відео, працюю із spring jpa приблизно 2 роки, але всерівно дізнався багато нового. Дякую за контент!
Бобокод красавела! Йой!
Йой! :)
Дякую. Дуже корисне та пізнавальне відео.
Дякую!
Лайк, подписка, комментарий в поддержку крутого контента на ютубе.
Крутий урок! Скажіть, ніхто не знає, на 25:42 там де підказки до назв derived methods, це фішка Ultimate версії IntelliJ чи може плагін якийсь? ))
Це, напевно, якись плагін від Spring.
@@Bobocode дякую!
А як бути, якщо хочеться на фронт передавати різні DTO однієї ентіті з контролера? В SpringDataRest як раз projections забезпечують варінт віддати таку дто, або іншу тільки по суті передачею імені projection як get параметр. В простому контроллері треба під кожний варіант писати смій метод? Чи можна якось також параметром передати з фронта, як в відео в репозиторій прокидували класс?
Писав довгий коментар з чим я там не згодний, а потім витер. Тож просто коментар, щоб канал розвивався)
Ну ти мене заінтригував. Тепер поділися, будь ласка, з чим не згоден :)
Дякую 🙂
@@Bobocode скорше пару речень, на скільки тема з репозиторієм широка. У Фаулера окрім визначення майже немає коду. Він одразу переходить до QueryObject і Criteria, хоча репозиторій може бути і без них, як описує Еванс у ДДД (Фаулер на нього часто ссилається). Мене визначення по Фаулеру сильно збило у свій час, ніби репозиторій - то просто CRUD, через collection-like операції. Головна ж domain model, з*являється різниця між DAO і Repository.
Цей паттерн дуже крутий, кочує між різними мовами і фреймворками. Але у Фаулера він описаний по Хібернейту) Треба починати свої відео робити
Щодо findAll. На багатьох проектах бази були великі. І викликати findAll() або count() означало моментальний гнів девопсів. Пул забивається, запит іде пару хвилин, і особливо нічого я зробити не можу. Щойно побачив ще findAll(sort) - це за межами добра і зла(
Чому такі небезпечні операції є в стандартному інтерфейсі Repository?
А ви використовули пагінацію чи мудрували з індексами? І замість count() робили explain analyze?
@@mykhailomolnar2432 робив і пагінацію, і seek method, і стримінг. Дивлячись до була за задача. З count може бути трохи простіше, бо в деяких базах є на кшталт приблизний count (mongo). Якщо не помиляюся, MySQL, Elastic такий запит переварять легко. З Postgres були питання.
Так, зазвичай був eplain analyze, після того яr на проді моніторилися і логувалися найбільш довгі запити.
я прошу прощения , а разве это правильно обращаться из контроллера к репозиторию на прямую без сервиса
или это просто в обучающих целях как тест
Це просто в навчальних цілях
MVC - a feature, not a bug.
Довго не міг зрозуміти чому у мене немає distinct і не дублюються Persons - тут ua-cam.com/video/aJulegjqWEw/v-deo.html
Виявилось, що залежить від версії спрінга (тепер більш пізня версія є і Jakarta мабуть це врахувала)
Привіт. Так, дякую, що підмітили. Це насправді залежить від версії Hibernate.
*From Hibernate ORM 6, distinct is always passed to the SQL query and the flag QueryHints**#HINT_PASS_DISTINCT_THROUGH** has been removed.*
Тут можна прочитати більш детально: docs.jboss.org/hibernate/orm/6.0/migration-guide/migration-guide.html#query-sqm-pass-thru
"Оцю штуку" потрібно викорінювати з лексикону - дуже била по вухах. Контент Ок, авторові вподобайка. Для мене - заповільне подання матеріалу :)
Звичайний сленг. Часто чую від зарубіжних спікерів фразу "this guy" :-)
@@intBRiNGER не згоден з формулюванням що це сленг