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?
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 DataSource
s 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
}