В двух словах 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
позволяет достаточно элегантно решить эту проблему с довольно низкой ценой.