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.