web-dev-qa-db-fra.com

spring-jdbc vs spring-data-jdbc et que soutiennent-ils

Je suis curieux de savoir quelle est la différence entre le spring-jdbc (ce qui me manque dans la dernière version du printemps) et le spring-data-jdbc.
Y a-t-il une différence ou simplement un changement de nom (dans les référentiels, je ne vois pas cela)?

Et est-il décrit quelque part quelles sont les cibles prises en charge (spécifications DB/JDBC/JDK) des versions?

par exemple. pour le JDBC simple d'Oracle, je peux voir ces informations ici: http://www.Oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#01_03_1
(par exemple: JDBC Spec 4.1 dans ojdbc7.jar sur Java7/Java8 sur Oracle DB 12.1/12cR1)

Mais cela me manque pour spring-jdbc - où puis-je trouver cette information?

9
PaulEdison

spring-jdbc`

Les documents pour spring-jdbc sont fondamentalement ici:

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

Bien qu'il ne vous pointe pas spécifiquement vers le projet Spring spring-jdbc. Ce projet fournit simplement toutes les abstractions de Spring sur le JDBC brut DataSource que vous pouvez utiliser avec le framework Spring. Par exemple, le Spring DataSources qui s'intègre bien aux capacités de gestion des transactions de Spring, comme le @Transactional annotation. En outre, le JdbcTemplate fait partie de ce module, qui vous permet d'exécuter des instructions SQL et d'extraire des objets des ensembles de résultats sans traiter la gestion des exceptions ou les détails désagréables de la fermeture correcte des instructions, des connexions, etc.

spring-data-jdbc

spring-data-jdbc, d'autre part, fournit l'abstraction des données de printemps sur spring-jdbc. Autrement dit, vous pouvez créer une Spring Data CrudRepository et une simple "entité" (pas une JPA entité!) Et, comme le fait Spring Data, elle créera vos requêtes pour vous sans que vous ayez pour écrire des requêtes CRUD natives sur JDBC, comme dans cet exemple sur le spring-data-examples git repo .

Utilisation de l'exemple référencé comme démonstration:

interface CategoryRepository extends CrudRepository<Category, Long> {}

Le code ci-dessus est tout ce dont vous pourriez avoir besoin (en utilisant l'introspection sur le nom d'objet Category comme source pour le nom de la table (basé sur un NamingStrategy) et ses propriétés en tant que colonnes, encore similaire à JPA, mais sans utiliser JPA.

Plutôt que d'écrire le vôtre comme ça:

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

  // The rest of my other CRUD operations
}
8
Dovmo