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
}