Как spring-data-jdbc дополняет MyBatis? - PullRequest
2 голосов
/ 23 мая 2019

Я хотел бы понять, почему spring-data-jdbc обеспечивает интеграцию с MyBatis.

  • Какую проблему это решает?
  • Как spring-data-jdbc дополняет MyBatis.
  • Это просто вопрос соответствия Mapper хранилищу или он выходит за рамки этого.
  • Зачем мне использовать в сочетании MyBatis с spring-data-jdbc, когда я могу просто использовать Mappers.

1 Ответ

2 голосов
/ 23 мая 2019

В двух словах spring-data-jdbc предоставляет реализацию, управляемую доменом Репозиторий , для хранилища, предоставляющего JDBC API.Концептуально он пытается быть очень простым (особенно если сравнить его с JPA).И похож на mybatis в том смысле, что он не пытается вводить абстракции, которые скрывают сложность ORM.

Вот цитата из spring-data-jdbc документации:

  • Если вы загружаете сущность, операторы SQL выполняются.Как только это сделано, у вас есть полностью загруженный объект.Не выполняется отложенная загрузка или кэширование.
  • Если вы сохраняете объект, он сохраняется.Если вы этого не сделаете, это не так.Нет грязного отслеживания и нет сеанса.
  • Существует простая модель отображения сущностей на таблицы.Вероятно, это работает только для довольно простых случаев.Если вам это не нравится, вы должны написать свою собственную стратегию.Spring Data JDBC предлагает только очень ограниченную поддержку для настройки стратегии с аннотациями.

spring-data-jdbc может использоваться без mybatis.Запросы генерируются из имени метода с использованием довольно простых правил или явно указываются с использованием аннотации @Query.

Это обеспечивает интеграцию с mybatis, и это позволяет использовать третий способ для определения запросов, а именно с помощью mybatis mapper.со всеми функциями, доступными в Mybatis.Это позволяет создавать более сложные отображения, в то же время используя автоматическую генерацию запросов на основе имени метода репозитория для простых запросов.

Иногда необходимость создания SQL-запросов даже для простых операций CRUD рассматривается как ограничение или проблема в mybatis.spring-data-jdbc позволяет решить эту проблему за счет введения в приложение дополнительного уровня абстракции (хранилища).Я говорю additional, потому что в качестве хранилища DDD можно использовать mybatis mapper.

Действительно, если в приложении много операций CRUD, будет много очень похожего кода или некоторых решений для создания универсального кода.Будет внедрен и использован CRUD, подобный https://github.com/rickcr/mybatis-generic-crud.

spring-data-jdbc позволяет достаточно элегантно решить эту проблему с довольно низкой ценой.

...