Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Hibernate, что в тренде? :)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1078
Всем привет!

По следам фреймворка spring пришел к hibernate. И тут началось...
Старенькое конфигурирование спринговых xml вперемешку с аннотациями, hibernate.cfg.xml и *.hbm.xml файлы, persistence.xml.
Да что же это за зверь-то такой, где у него хвост и голова???

Из того что встречалось - много примеров, все разные, ряд просто устаревших, некоторые настолько дикие, что не верится в то что это вообще правильные примеры.

Написал кучу хелловорлдов, и остался крайне недоволен.

Подскажите пожалуйста, пошаговую литературу с современным подходом использования hibernate, с конкретными примерами.
7 ноя 17, 18:38    [20934123]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Imperous
следам фреймворка spring пришел к hibernate. И тут началось...

)).
Надо так:
Спринг без хибера, потом хибер без спринга, потом всё вместе

А вы наборот, первое блюдо смешали со вторым.
Вот и всё.
7 ноя 17, 19:21    [20934218]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23690
Imperous,
Всё что связано с XML - сразу нафиг
"спринговых xml" - никаких XML. Только Java и немного аннотаций.
hibernate.cfg.xml - нафиг Hibernate API. Только JPA, Hibernate исключительно как реализация.
*.hbm.xml - это вообще допотопное и устаревшее. Маппинг только JPA аннотациями.
persistence.xml - нафиг. Оно только в JEE нужно.

Spring Boot + Spring Data

Вот, вроде, норм пример:
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/sample/data/jpa
7 ноя 17, 19:27    [20934233]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Usman
Member

Откуда: من ألماتي
Сообщений: 5141
Imperous,

- Spring Data JPA - Reference Documentation
- Chapter 15. Criteria Queries
- Hibernate Validator (docs)
7 ноя 17, 20:14    [20934322]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Blazkowicz
Spring Boot + Spring Data

Ну, если только он опять не потеряется в бут+спринг+jpa+хибер+бд.
7 ноя 17, 20:35    [20934417]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
mayton
Member

Откуда: loopback
Сообщений: 35683
Imperous
Всем привет!

По следам фреймворка spring пришел к hibernate. И тут началось...
Старенькое конфигурирование спринговых xml вперемешку с аннотациями, hibernate.cfg.xml и *.hbm.xml файлы, persistence.xml.
Да что же это за зверь-то такой, где у него хвост и голова???

Сразу вброшу несколько поинтов.
1) Вы выхватили одну из самых сложных частей Java/Spring/JPA
2) Да. Большинство примеров в сети - безнадежно устарели.
3) Вы должны знать и понимать как работает реляционная DBMS. Экспертом быть не надо
но вы должны хотя-бы понимать коды ошибок конкретной реализации (PostgreSQL/MySQL e.t.c)
и знать что они означают и как ситуацию фиксить на уровне чистого SQL.

Самый лучший способ узнать Hibernate - это влиться в живой проект и какое-то
время порешать баги или просто посмотреть что народ коммитит.
8 ноя 17, 00:31    [20934963]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Вопрос конечно интересный.
Нужно ли знать DAO, если спринг всё генерит за вас и абстрагирует).
Думаю всё индивидуально для каждого.
Не получилось понять магию спринга - изучать без спринга (под капотом).
Се ля ви.
8 ноя 17, 08:23    [20935207]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
fplab
Member

Откуда:
Сообщений: 266
Мне очень помогла "Изучаем JavaEE 7" Энтони Гонсалвеса (главы 4, 5, 6), посвященные jpa.
Потом читал туториалы на сайте hibernate. Попутно делал небольшие проекты, чтобы набить руку. И, как опупеоз, купил (JAVA PERSISTENCE API И HIBERNATE). Но, каюсь, уже месяца 3 как пытаюсь плотно заняться этой книгой, все недосуг :)
8 ноя 17, 08:49    [20935246]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1078
mayton
Сразу вброшу несколько поинтов.
1) Вы выхватили одну из самых сложных частей Java/Spring/JPA
2) Да. Большинство примеров в сети - безнадежно устарели.
3) Вы должны знать и понимать как работает реляционная DBMS. Экспертом быть не надо
но вы должны хотя-бы понимать коды ошибок конкретной реализации (PostgreSQL/MySQL e.t.c)
и знать что они означают и как ситуацию фиксить на уровне чистого SQL.

Самый лучший способ узнать Hibernate - это влиться в живой проект и какое-то
время порешать баги или просто посмотреть что народ коммитит.


SQL вообще не проблема, опыта предостаточно.
8 ноя 17, 09:59    [20935380]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 12806
Imperous
mayton
Сразу вброшу несколько поинтов.
1) Вы выхватили одну из самых сложных частей Java/Spring/JPA
2) Да. Большинство примеров в сети - безнадежно устарели.
3) Вы должны знать и понимать как работает реляционная DBMS. Экспертом быть не надо
но вы должны хотя-бы понимать коды ошибок конкретной реализации (PostgreSQL/MySQL e.t.c)
и знать что они означают и как ситуацию фиксить на уровне чистого SQL.

Самый лучший способ узнать Hibernate - это влиться в живой проект и какое-то
время порешать баги или просто посмотреть что народ коммитит.


SQL вообще не проблема, опыта предостаточно.

тогда забей хиюер - меньше проблем. эта прокладка только для тех кто с sql не дружит. чтоб не видно было как обсираются.
8 ноя 17, 10:16    [20935444]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1078
Usman
- Spring Data JPA - Reference Documentation
- Chapter 15. Criteria Queries
- Hibernate Validator (docs)


на первый взгляд сурово выглядит.
спасибо!
8 ноя 17, 10:19    [20935456]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1078
вадя,

та ну как так, врага надо знать в лицо! :)
8 ноя 17, 10:20    [20935464]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Usman
Member

Откуда: من ألماتي
Сообщений: 5141
Petro123
Нужно ли знать DAO, если спринг всё генерит за вас и абстрагирует).
+1.5

DAO/DAL застрял между паттернами Repository и Service Layer (в т.ч. и @Service)
8 ноя 17, 10:21    [20935469]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23690
Usman
DAO/DAL застрял между паттернами Repository и Service Layer (в т.ч. и @Service)


Народ до сих пор по инерции DAO на всё говорит. Даже в недавнем докладе с JUG было SomeDAO extends JpaRepository :)
8 ноя 17, 10:32    [20935505]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23690
Usman
застрял между паттернами

Не очень понял эту фразу. Никто нигде не застревал.
DAO - конкретный паттерн. Задача DAO класса инкапсулировать доступ к конкретному способу хранения объекта, в частности JDBC+SQL. С появлением продвинутых API вроде jOOQ и JPA - DAO стал не нужен, так как инкапсулировать там особо нечего уже.
Service Layer aka Transaction Script тоже имеет конкретное предназначение - реализовавать workflow бизнес-логики, а так же основных фасадом приложения, с которым работают пограничные слои.
Задача Repository - инкапсулировать запросы.
Вроде всё просто.

DAO не нужен, так как его польза нивелирована современными библиотеками.
Repository нужен, так как сложные запросы нужно выносить из сервиса.
Вполне логичный тренд.
8 ноя 17, 10:37    [20935528]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Usman
Member

Откуда: من ألماتي
Сообщений: 5141
Blazkowicz
Не очень понял эту фразу. Никто нигде не застревал.
забыл заключить в кавычки (:
Blazkowicz
DAO - конкретный паттерн.
Не совсем паттерн, на мой взгляд, это нечто среднее между сервисом и репозиторием:
- Repository - это чистый CRUD
- Service - бизнес-логика (иногда я называю - совокупностью репозиториев)

в то время, как DAO может быть и CRUD и одновременно хранить некую бизнес-логику (проверки/валидация и т.д.).

имхо-имховое
8 ноя 17, 10:53    [20935604]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Blazkowicz
DAO стал не нужен, так как инкапсулировать там особо нечего уже.

Как нечего?
Оно осталось только внутри.
Спринг его спрятал.
Сам спринг ничего не делает).
А основная фича преподносится, что мы можем за jpa заменить хибер чем нибудь другим.
Imho паттерн абстрагироваться через чур сильно везде где ни попадя.
JavaEE этим грешил и помер.
8 ноя 17, 11:07    [20935658]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Usman,
+1
По мне, лучше чтобы это были 2 ветки. И параллельно развивались.
И спринг не лез особо в ОРМ.
8 ноя 17, 11:09    [20935667]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23690
Petro123
Как нечего?

Вот так. Вся работа с базой и соответствующий boilerplate код уже спрятаны куда подальше.

Petro123
Оно осталось только внутри.

Правильно, поэтому зачем это всё заворачивать ещё в один слой?

Petro123
А основная фича преподносится, что мы можем за jpa заменить хибер чем нибудь другим.

Это ерунда. Никто не меняет коней наскоку. Меня больше всего умиляло когда спрашиваешь на собеседованиях про MVC и народ распинается, что можно менять реализации слоёв. Никому это нафиг не надо. Никто не будет менять JPA на jOOQ в середине проекта. Так можно любой паттерн описать. Зачем нужен Service Layer*? Ну чтобы в нём написать логику с одними либами, и всегда можно было заменить на логику с другими либами. Ерунда же.
8 ноя 17, 11:29    [20935724]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Blazkowicz
Никто не меняет коней наскоку

+5
8 ноя 17, 11:34    [20935740]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 12806
Imperous
вадя,

та ну как так, врага надо знать в лицо! :)

ну с этим не поспоришь
8 ноя 17, 13:06    [20936123]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1078
Blazkowicz
Imperous,
Всё что связано с XML - сразу нафиг
"спринговых xml" - никаких XML. Только Java и немного аннотаций.
hibernate.cfg.xml - нафиг Hibernate API. Только JPA, Hibernate исключительно как реализация.
*.hbm.xml - это вообще допотопное и устаревшее. Маппинг только JPA аннотациями.
persistence.xml - нафиг. Оно только в JEE нужно.

Spring Boot + Spring Data

Вот, вроде, норм пример:
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa/src/main/java/sample/data/jpa

нафиг Hibernate API - в смысле "нафиг"? я же за ним и пришел )

Загрузил весь проект, ох там конечно примеров, гора целая.
Может я чего-то не понял, но в указанном примере Hibernate - нет. Просмотрел, но пока не дощупал...
Спасибо!
8 ноя 17, 17:35    [20937438]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23690
Imperous
нафиг Hibernate API - в смысле "нафиг"? я же за ним и пришел )

Не нужно игнорировать непонятные термины. Нужно их изучать. API это то что вы используете в своём коде. А "реализация" это то что работает когда ваш код выполняется. Так вот Hibernate API вам для начала не нужен. А нужен JPA API. А Hibernate вам нужен только как JPA реализация.

Imperous
Загрузил весь проект, ох там конечно примеров, гора целая.

Ну, я же дал ссылку только на Spring Data JPA. Небольшой полноценный Hello World того что вы ищете.

Imperous
Может я чего-то не понял, но в указанном примере Hibernate - нет. Просмотрел, но пока не дощупал...

Да. Он как бы не очевиден.
Но вот тут
https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-data-jpa/pom.xml
в зависимостях находится spring-boot-starter-data-jpa
У которого в зависимостях:
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa/2.0.0.M5
находится тот самый Hibernate.
8 ноя 17, 17:54    [20937538]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 30187
Imperous
но в указанном примере Hibernate - нет.

Выше про DAO и ОРМ маппинг читали посты?
За спрингом это сложно осознать.
Выбирайте варианты и дерзайте).
Удачи!
8 ноя 17, 19:38    [20937868]     Ответить | Цитировать Сообщить модератору
 Re: Hibernate, что в тренде? :)  [new]
mayton
Member

Откуда: loopback
Сообщений: 35683
вадя
Imperous
пропущено...


SQL вообще не проблема, опыта предостаточно.

тогда забей хиюер - меньше проблем. эта прокладка только для тех кто с sql не дружит. чтоб не видно было как обсираются.

Эй это было грубо.
9 ноя 17, 00:48    [20938588]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Java Ответить