Bevezetés a Spring Data JDBC-be

1. Áttekintés

A Spring Data JDBC egy olyan tartós keretrendszer, amely nem olyan összetett, mint a Spring Data JPA. Nem biztosítja a gyorsítótárat, a lusta betöltést, az elírást vagy a JPA sok más tulajdonságát. Ennek ellenére saját ORM-mel rendelkezik, és biztosítja a Spring Data JPA-val használt legtöbb funkciót mint a leképezett entitások, adattárak, lekérdezési kommentárok és JdbcTemplate.

Fontos szem előtt tartani, hogy A Spring Data JDBC nem kínál sémakészítést. Ennek eredményeként felelősek vagyunk a séma kifejezett létrehozásáért.

2. A Spring Data JDBC hozzáadása a projekthez

A Spring Data JDBC elérhető a Spring Boot alkalmazások számára a JDBC függőségi indítóval. Ez a függőségi indító azonban nem hozza meg az adatbázis-illesztőprogramot. Ezt a döntést a fejlesztőnek kell meghoznia. Adjuk hozzá a Spring Data JPA függőségindítóját:

 org.springframework.boot spring-boot-starter-data-jdbc 

Ebben a példában a H2 adatbázist használjuk. Mint korán említettük, a Spring Data JDBC nem kínál sémakészítést. Ilyen esetben létrehozhatunk egy szokást schema.sql fájl, amely az SQL DDL parancsokkal rendelkezik a sémaobjektumok létrehozásához. Automatikusan a Spring Boot kiválasztja ezt a fájlt, és adatbázis-objektumok létrehozásához használja.

3. Entitások hozzáadása

A többi Spring Data projekthez hasonlóan annotációkkal térképezzük fel a POJO-kat adatbázis-táblákkal. Ban ben Spring Data JDBC, az entitásnak rendelkeznie kell egy @Id. A Spring Data JDBC a @Id megjegyzés az entitások azonosításához.

A Spring Data JPA-hoz hasonlóan a Spring Data JDBC alapértelmezés szerint olyan elnevezési stratégiát használ, amely a Java-entitásokat relációs adatbázis-táblákhoz és attribútumokat oszlopnevekhez rendezi. Alapértelmezés szerint az entitások és az attribútumok Camel Case nevei a táblák, illetve az oszlopok kígyóneveihez vannak társítva. Például egy Java nevű entitás Címjegyzék nevű adatbázis táblához van hozzárendelve címjegyzék.

Ezenkívül az entitásokat és az attribútumokat táblákkal és oszlopokkal is feltérképezhetjük a @Asztal és @Oszlop annotációk. Például alább definiáltuk azt az entitást, amelyet ebben a példában használni fogunk:

nyilvános osztály Személy {@Id magán hosszú azonosító; privát karakterlánc keresztnév; privát karakterlánc vezetéknév; // kivitelezők, szerelők, telepítők}

Nincs szükségünk a feliratozásra @Asztal vagy @Oszlop ban,-ben Személy osztály. A Spring Data JDBC alapértelmezett elnevezési stratégiája implicit módon elvégzi az entitás és a táblázat közötti összes leképezést.

4. A JDBC adattárak bejelentése

A Spring Data JDBC a Spring Data JPA-hoz hasonló szintaxist használ. A. Kiterjesztésével létrehozhatunk egy Spring Data JDBC adattárat Adattár, CrudRepository vagy PagingAndSortingRepository felület. Megvalósítással CrudRepository, megkapjuk a leggyakrabban használt módszerek, mint pl mentés, töröl, és findByIdtöbbek között.

Hozzunk létre egy JDBC adattárat, amelyet a példánkban használunk:

@Repository nyilvános felület A PersonRepository kiterjeszti a CrudRepository {}

Ha lapozással és rendezéssel kell rendelkeznünk, akkor a legjobb választás az PagingAndSortingRepository felület.

5. A JDBC adattárak testreszabása

Annak ellenére CrudRepository beépített módszerekkel, meg kell alkotnunk a módszereinket konkrét esetekre. Fontos megjegyezni, hogy a Spring Data JDBC nem támogatja a levezetett lekérdezéseket. Ez azt jelenti, hogy nem csak a metódus nevét írhatjuk és arra számíthatunk, hogy a Spring Data JDBC generálja a lekérdezést.

Minden alkalommal, amikor egyéni metódust írunk, ki kell díszítenünk a @Lekérdezés annotáció. Benne @Lekérdezés megjegyzéssel, hozzáadjuk az SQL parancsunkat. A Spring Data JDBC-ben egyszerű SQL-ben írunk lekérdezéseket. Nem használunk olyan magasabb szintű lekérdezési nyelvet, mint a JPQL. Ennek eredményeként az alkalmazás szorosan összekapcsolódik az adatbázis-szállítóval.

Emiatt szintén nehezebb áttérni egy másik adatbázisra.

Egy másik fontos különbség az A Spring Data JDBC nem támogatja a paraméterek hivatkozását indexszámokkal. A Spring Data JDBC ezen verziójában csak név szerint hivatkozhatunk a paraméterekre.

A ... val @ Módosító annotációval feljegyezhetjük az entitást módosító lekérdezési módszereket.

Most testre szabhatjuk PersonRepository nem módosító és módosító lekérdezéssel:

@Repository nyilvános felület A PersonRepository kiterjeszti a CrudRepository {@Query ("select * from person where first_name =: firstName") List findByFirstName (@Param ("firstName") String firstName); @Modify @Query ("UPDATE person SET first_name =: name WHERE id =: id") logikai frissítésByFirstName (@Param ("id") Long id, @Param ("name") karakterlánc neve); }

6. Az adatbázis feltöltése

Végül fel kell töltenünk az adatbázist olyan adatokkal, amelyek a fentiekben létrehozott Spring Data JDBC adattár tesztelésére szolgálnak. Létrehozunk egy adatbázis-vetőgépet, amely be fogja helyezni a dummy adatokat. Adjuk hozzá az adatbázis-vetőgép megvalósítását ehhez a példához:

@Component public class DatabaseSeeder {@Autowired private JdbcTemplate jdbcTemplate; public void insertData () {jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Victor', 'Hugo')"); jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Dante', 'Alighieri')"); jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Stefan', 'Zweig')"); jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Oscar', 'Wilde')"); }}

Amint fent látható, a Spring JDBC-t használjuk a INSERT nyilatkozatok. Különösen a Spring JDBC kezeli az adatbázissal való kapcsolatot, és lehetővé teszi számunkra az SQL parancsok végrehajtását JdbcTemplates. Ez a megoldás nagyon rugalmas, mert teljes mértékben ellenőrizhetjük a végrehajtott lekérdezéseket.

7. Következtetés

Összefoglalva, a Spring Data JDBC olyan egyszerű megoldást kínál, mint a Spring JDBC használata - nincs mögötte varázslat. Mindazonáltal a legtöbb olyan funkciót is kínál, amelyeket megszokhattunk a Spring Data JPA használatához.

A Spring Data JDBC egyik legnagyobb előnye a jobb teljesítmény az adatbázis-hozzáférés során, a Spring Data JPA-hoz képest. Ennek oka a Spring Data JDBC közvetlenül kommunikál az adatbázissal. Spring Data A JDBC nem tartalmazza a Spring Data varázslat nagy részét az adatbázis lekérdezésénél.

Az egyik legnagyobb hátrány a Spring Data JDBC használatakor az adatbázis-gyártótól való függőség. Ha úgy döntünk, hogy az adatbázist MySQL-ről Oracle-re cseréljük, esetleg olyan problémákkal kell megküzdenünk, amelyek különböző dialektusú adatbázisokból származnak.

Ennek a Spring Data JDBC oktatóanyagnak a megvalósítása megtalálható a GitHub oldalon.