Re[9]: Класс DAL и много функций в нем
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 01.10.13 20:04
Оценка:
Здравствуйте, GreenTea, Вы писали:

GT>Здравствуйте, Nikolay_P_I, Вы писали:


N_P>>Здравствуйте, GreenTea, Вы писали:


N_P>>DAL над ORM ? А почему не просто ORM ?

GT>Не понял этого вопроса.
ORM (Hibernate) это уже реализация DAO. Вопрос в том, зачем нужны отдельные методы. У вас разные БД поддерживаются и native sql?
http://jvmmemory.com — простой способ настройки JVM
Re[10]: Класс DAL и много функций в нем
От: GreenTea  
Дата: 02.10.13 13:33
Оценка:
Здравствуйте, LeonidV, Вы писали:

LV>Здравствуйте, GreenTea, Вы писали:


GT>>Здравствуйте, Nikolay_P_I, Вы писали:


N_P>>>Здравствуйте, GreenTea, Вы писали:


N_P>>>DAL над ORM ? А почему не просто ORM ?

GT>>Не понял этого вопроса.
LV>ORM (Hibernate) это уже реализация DAO. Вопрос в том, зачем нужны отдельные методы. У вас разные БД поддерживаются и native sql?

Извините, все равно не понятно. Какие отдельные методы? Мы используем MySQL, но так же пробовали PostgreSQL (менять код для этого не потребовалось). Нативный sql не используем.. Только DetachedCriteria
Re[11]: Класс DAL и много функций в нем
От: . Великобритания  
Дата: 02.10.13 13:45
Оценка:
Здравствуйте, GreenTea, Вы писали:

N_P>>>>DAL над ORM ? А почему не просто ORM ?

GT>>>Не понял этого вопроса.
LV>>ORM (Hibernate) это уже реализация DAO. Вопрос в том, зачем нужны отдельные методы. У вас разные БД поддерживаются и native sql?

GT>Извините, все равно не понятно. Какие отдельные методы? Мы используем MySQL, но так же пробовали PostgreSQL (менять код для этого не потребовалось). Нативный sql не используем.. Только DetachedCriteria

Я вроде понимаю что он спрашивает, и действительно интересно. Hibernate сам по себе уже предоставляет DAL, вы же поверх его накручиваете ещё один абстрактный слой, который в общем-то ничего не делает, просто зовём методы сессии:
   public <T extends IEntity> void save(T instance) throws EntityConstraintException
   {
      getCurrentSession().save(instance);      
   }

ещё непонятно накой там generics? Ведь тип T нигде не используется. Поэтому можно упростить:
   public void save(IEntity instance) throws EntityConstraintException
   {
      getCurrentSession().save(instance);      
   }

И тут уже становится совсем очевидно, что этот код ничего не делает — надо просто hibernate.Session.save() звать да не мучиться.

Короче, с KISS у вас там проблемы.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[12]: Класс DAL и много функций в нем
От: GreenTea  
Дата: 03.10.13 10:08
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, GreenTea, Вы писали:


N_P>>>>>DAL над ORM ? А почему не просто ORM ?

GT>>>>Не понял этого вопроса.
LV>>>ORM (Hibernate) это уже реализация DAO. Вопрос в том, зачем нужны отдельные методы. У вас разные БД поддерживаются и native sql?

GT>>Извините, все равно не понятно. Какие отдельные методы? Мы используем MySQL, но так же пробовали PostgreSQL (менять код для этого не потребовалось). Нативный sql не используем.. Только DetachedCriteria

.>Я вроде понимаю что он спрашивает, и действительно интересно. Hibernate сам по себе уже предоставляет DAL, вы же поверх его накручиваете ещё один абстрактный слой, который в общем-то ничего не делает, просто зовём методы сессии

А, ну в чем то вы правы. Так же у нас есть еще QueryDao, который предоставляет методы поиска через getCurrentSession(). Таким образом сервиса и бизнес обьекты, если им нужны только CRUD — инжектят BaseDao, если еще запросы QueryDao. Наверно это дань традиции так делать. + немного меньшая завязанность всего кода на Hibernate. Хотя, код и так прилично завязан из-за использования DetachedCriteria.
Re[13]: Класс DAL и много функций в нем
От: . Великобритания  
Дата: 03.10.13 13:15
Оценка: 4 (1)
Здравствуйте, GreenTea, Вы писали:

GT>А, ну в чем то вы правы. Так же у нас есть еще QueryDao, который предоставляет методы поиска через getCurrentSession(). Таким образом сервиса и бизнес обьекты, если им нужны только CRUD — инжектят BaseDao, если еще запросы QueryDao. Наверно это дань традиции так делать. + немного меньшая завязанность всего кода на Hibernate. Хотя, код и так прилично завязан из-за использования DetachedCriteria.

Кстати, рекомендую взглянуть на querydsl — на порядок лучше DetachedCriteria.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[14]: Класс DAL и много функций в нем
От: GreenTea  
Дата: 04.10.13 11:53
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, GreenTea, Вы писали:


GT>>А, ну в чем то вы правы. Так же у нас есть еще QueryDao, который предоставляет методы поиска через getCurrentSession(). Таким образом сервиса и бизнес обьекты, если им нужны только CRUD — инжектят BaseDao, если еще запросы QueryDao. Наверно это дань традиции так делать. + немного меньшая завязанность всего кода на Hibernate. Хотя, код и так прилично завязан из-за использования DetachedCriteria.

.>Кстати, рекомендую взглянуть на querydsl — на порядок лучше DetachedCriteria.

Спасибо, любопытная штука В текущем проекте наврятли, но в новом можно попробовать изспользовать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.