spring-jdbc против spring-data-jdbc и что они поддерживают

Мне любопытно, в чем разница между spring-jdbc (чего мне не хватало в новейшей версии Spring) и spring-data-jdbc.
Есть ли разница или просто переименование (в репозиториях я этого не вижу)?

И есть ли где-то описанные, каковы поддерживаемые цели (спецификации DB/JDBC /JDK) версий?

например, для простого JDBC от oracle, я могу видеть эту информацию здесь: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html
(например: JDBC Spec 4.1 в ojdbc7.jar на Java7/Java8 на Oracle DB 12.1/12cR1)

Но я упускаю это для Spring-JDBC - где я могу найти эту информацию?

1 ответ

весна-jdbc`

Документы для spring-jdbc в основном здесь:

https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html

Хотя это не указывает конкретно на проект Spring spring-jdbc, Этот проект просто предоставляет все абстракции Spring поверх простого JDBC DataSource что вы можете использовать с Spring Framework. Например, весна DataSource s, которые хорошо вписываются в возможности управления транзакциями Spring, такие как @Transactional аннотаций. Так же JdbcTemplate является частью этого модуля, который позволяет выполнять операторы SQL и извлекать объекты из Resultsets, не имея дело с обработкой исключений или неприятными деталями правильного закрытия операторов, соединений и тому подобного.

spring-data-jdbc

spring-data-jdbc с другой стороны, предоставляет абстракцию Spring Data над spring-jdbc, То есть вы можете создать Spring Data CrudRepository и простая "сущность" (не JPA entity!) и, как это делает Spring Data, он создаст ваши запросы для вас без необходимости писать собственные запросы CRUD через JDBC, как в этом примере на spring-data-examples мерзавец репо.

Используя приведенный пример в качестве демонстрации:

interface CategoryRepository extends CrudRepository<Category, Long> {}

Вышеприведенный код - это все, что вам может понадобиться (используя Category имя объекта в качестве источника для имени таблицы (на основе NamingStrategy) и его свойства в виде столбцов, опять-таки похожие на JPA, но без использования JPA.

Вместо того, чтобы писать свой собственный, вот так:

@Repository
public class CategoryRepository {
   public void create(Category category) {
      jdbcTemplate.execute("insert...");
   }

  // The rest of my other CRUD operations
}
Другие вопросы по тегам