Абстракция над различными каркасами OR Mapping - PullRequest
0 голосов
/ 08 ноября 2011

Уровень доступа к данным моего продукта сегодня использует Hibernate в качестве среды сопоставления OR. В будущем мы хотели бы использовать другие платформы, такие как iBatis.

  1. Каков наилучший способ создания такого уровня абстракции поверх этих платформ OR OR?
  2. Есть ли такие рамки уже доступны?
  3. Я хочу спроектировать такую ​​систему, в которой с простыми изменениями конфигурации я смогу переключаться между этими ИЛИ каркасами.

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Я не думаю, что добавление абстракции поверх hibernate / ibatis имеет смысл.Это совершенно разные фреймворки - даже если вы в состоянии создать общий API - это исключит часть метаданных (от которой ваш код гораздо больше зависит).Вы должны серьезно задуматься о том, зачем вам это нужно и как это будет выглядеть. Уже люди жалуются на слишком много уровней абстракций - добавление большего количества только усложняет ситуацию.

Лучшим решением было бы изолировать большую часть логики вашего домена от зависимости от постоянства / транзакции / безопасности и т. Д. (Domain Driven Design).Таким образом, вы сможете сохранить важные части логики приложения, если вам придется изменить реализацию одного из них.

Взгляните на spring-data , он отличается от того вида абстракции, который вы ищете.

0 голосов
/ 11 ноября 2011

Во-первых, я полностью согласен с ответом Xorty относительно фреймворков iBatis vs. Hibernate.

За исключением одного.Вы можете рассмотреть возможность переключения между iBatis, Hibernate.Я бы порекомендовал вам прочитать iBatis In Action книгу, главы 10, 11. Там вы найдете пример конфигурации iBatis, который позволяет настраивать / использовать iBatis и Hibernate с шаблоном DAO и его реализациями с помощью файлов карт iBatis sql, Hibernateи JDBC.

0 голосов
/ 09 ноября 2011

Проблема в том, что iBatis не является платформой ORM, а Hibernate.Цель iBatis - сопоставить конкретные операторы SQL с объектами, в то время как Hibernate пытается решить объектно-реляционное отображение (и несовпадение) более абстрактным способом.

Несколько лет назад подмножество основных функций Hibernate было стандартизировано дляJPA.Имеет смысл делать вещи JPA-способом (чтобы вы могли сменить поставщика JPA - Hibernate, EclipseLink, ObjectDB).

Однако не имеет особого смысла строить какую-то абстракцию поверх различных подходов (например, Hibernate vs iBatis).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...