Tavaszi csomagtartó SQLite-rel

1. Áttekintés

Ebben a gyors bemutatóban az SQLite adatbázis használatának lépéseit mutatjuk be egy JPA-kompatibilis Spring Boot alkalmazásban.

A Spring Boot néhány jól ismert memóriában lévő adatbázist már a dobozból támogat, de az SQLite egy kicsit többet igényel tőlünk.

Vessünk egy pillantást arra, mi kell ehhez.

2. Projekt beállítása

Szemléltetésképpen: kezdjük egy Spring Data Rest alkalmazás, amelyet a korábbi oktatóprogramokban használtunk.

A pomban hozzá kell adnunk a sqllite-jdbc függőség:

 org.xerial sqlite-jdbc 3.25.2 

Ez a függőség megadja nekünk, hogy mire van szükségünk a JDBC használatához az SQLite-kel való kommunikációhoz. De, ha ORM-et fogunk használni, ez nem elég.

3. SQLite dialektus

Lát, A hibernált nem szállít a Nyelvjárás az SQLite-hez. Magunknak kell létrehoznunk egyet.

3.1. Kiterjedő Nyelvjárás

Első lépésünk a kiterjesztés org.hibernate.dialect.Dialect osztály az SQLite által biztosított adattípusok regisztrálásához:

az SQLiteDialect nyilvános osztály kiterjeszti a Dialektet {public SQLiteDialect () {registerColumnType (Types.BIT, "integer"); registerColumnType (Types.TINYINT, "tinyint"); registerColumnType (Types.SMALLINT, "smallint"); registerColumnType (Types.INTEGER, "integer"); // egyéb adattípusok}}

Többféle van, ezért a többit mindenképpen nézze meg a mintakódban.

Ezután felül kell írnunk néhány alapértelmezettet Nyelvjárás viselkedések.

3.2. Azonosító oszlop támogatása

Például, el kell mondanunk a hibernáltnak, hogyan kezeli az SQLite @Id oszlopok, amit megtehetünk egy szokással IdentityColumnSupport végrehajtás:

public class SQLiteIdentityColumnSupport kiterjeszti az IdentityColumnSupportImpl {@Orride public boolean supportIdentityColumns () {return true; } @Orride public String getIdentitySelectString (String tábla, String oszlop, int típus) dobja a MappingException {return "select last_insert_rowid ()"; } @Orride public String getIdentityColumnString (int típus) dobja a MappingException {return "egész" értéket; }}

Annak érdekében, hogy a dolgok itt egyszerűek legyenek, tartsuk az identitás oszlop típusát Egész szám csak. A következő elérhető identitásérték megszerzéséhez pedig megadjuk a megfelelő mechanizmust.

Ezután egyszerűen felülírjuk a megfelelő módszert a növekedés során SQLiteDialect osztály:

@Orride public IdentityColumnSupport getIdentityColumnSupport () {return new SQLiteIdentityColumnSupport (); }

3.3. Tiltsa le a kényszerek kezelését

És, Az SQLite nem támogatja az adatbázis-korlátozásokat, ezért ezeket ki kell kapcsolnunk az elsődleges és az idegen kulcsok megfelelő módszereinek újbóli felülírásával:

@Orride public boolean hasAlterTable () {return false; } @Orride public boolean dropConstraints () {return false; } @Orride public String getDropForeignKeyString () {return ""; } @Orride public String getAddForeignKeyConstraintString (String cn, String [] fk, String t, String [] pk, logikai rpk) {return ""; } @Orride public String getAddPrimaryKeyConstraintString (String constraintName) {return ""; }

És pillanatok alatt hivatkozhatunk erre az új nyelvjárásra a Spring Boot konfigurációnkban.

4. Adatforrás Konfiguráció

Továbbá, mivel Tavaszi csizma nem biztosítja az SQLite adatbázis konfigurációs támogatását a dobozon kívül, a sajátunkat is ki kell tennünk Adatforrás bab:

@Autowired Environment env; @Bean public DataSource dataSource () {final DriverManagerDataSource dataSource = új DriverManagerDataSource (); dataSource.setDriverClassName (env.getProperty ("driverClassName")); dataSource.setUrl (env.getProperty ("url")); dataSource.setUsername (env.getProperty ("felhasználó")); dataSource.setPassword (env.getProperty ("jelszó")); return dataSource; }

És végül konfiguráljuk a következő tulajdonságokat a mi kitartás.tulajdonságok fájl:

driverClassName = org.sqlite.JDBC url = jdbc: sqlite: memória: myDb? cache = megosztott felhasználónév = sa jelszó = sa hibernate.dialect = com.baeldung.dialect.SQLiteDialect hibernate.hbm2ddl.auto = create-drop hibernate.show_sq igaz

Ne feledje, hogy a gyorsítótárat meg kell őriznünk megosztva annak érdekében, hogy az adatbázis-frissítések több adatbázis-kapcsolaton keresztül láthatóak maradjanak.

Tehát a fenti konfigurációkkal az alkalmazás elindul, és elindít egy memóriában lévő adatbázist myDb, amelyet a fennmaradó Spring Data Rest konfiguráció fel tud venni.

5. Következtetés

Ebben a cikkben vettünk egy minta Spring Data Rest alkalmazást, és egy SQLite adatbázisra mutattunk rá. Ehhez azonban létre kellett hoznunk egy egyedi hibernált nyelvjárást.

Ügyeljen arra, hogy ellenőrizze az alkalmazást a Githubon. Csak futni mvn -Dspring.profiles.active = sqlite spring-boot: futtatás és tallózzon a // localhost: 8080.