Jarné zavedenie pomocou SQLite

1. Prehľad

V tomto rýchlom výučbe si ukážeme kroky na použitie databázy SQLite v aplikácii Spring Boot s povoleným JPA.

Spring Boot podporuje niekoľko dobre známych databáz v pamäti už po vybalení z krabice, ale SQLite od nás vyžaduje niečo viac.

Poďme sa pozrieť na to, čo je potrebné.

2. Nastavenie projektu

Pre našu ilustráciu začneme s Aplikácia Spring Data Rest, ktorú sme používali v minulých tutoriáloch.

V pom, musíme pridať sqllite-jdbc závislosť:

 org.xerial sqlite-jdbc 3.25.2 

Táto závislosť nám dáva to, čo potrebujeme na použitie JDBC na komunikáciu s SQLite. Ale, ak budeme používať ORM, nestačí to.

3. SQLite dialekt

Pozri, Hibernate sa nedodáva s Nárečie pre SQLite. Musíme si jeden vytvoriť sami.

3.1. Predĺženie Nárečie

Naším prvým krokom je rozšírenie org.hibernate.dialect.Dialect triedy na registráciu dátových typov poskytovaných SQLite:

public class SQLiteDialect extends Dialect {public SQLiteDialect () {registerColumnType (Types.BIT, "integer"); registerColumnType (Types.TINYINT, "tinyint"); registerColumnType (Types.SMALLINT, "smallint"); registerColumnType (Types.INTEGER, "integer"); // ďalšie typy údajov}}

Je ich niekoľko, takže zvyšok si rozhodne pozrite na ukážkový kód.

Ďalej budeme musieť prepísať niektoré predvolené nastavenia Nárečie správanie.

3.2. Podpora stĺpca identity

Napríklad, musíme Hibernate povedať, ako narába s SQLite @Id stĺpce, čo môžeme urobiť so zvykom IdentityColumnSupport implementácia:

verejná trieda SQLiteIdentityColumnSupport rozširuje IdentityColumnSupportImpl {@Override public boolean supportsIdentityColumns () {return true; } @Override public String getIdentitySelectString (reťazcová tabuľka, stĺpcový reťazec, typ int) hodí MappingException {return "select last_insert_rowid ()"; } @Override public String getIdentityColumnString (typ int) hodí MappingException {return "integer"; }}

Aby sme to tu zjednodušili, ponechajme typ stĺpca identity na Celé číslo iba. A aby sme dostali ďalšiu dostupnú hodnotu identity, určíme vhodný mechanizmus.

Potom jednoducho prepíšeme zodpovedajúcu metódu v našom pestovaní SQLiteDialect trieda:

@Override public IdentityColumnSupport getIdentityColumnSupport () {vrátiť nový SQLiteIdentityColumnSupport (); }

3.3. Zakázať spracovanie obmedzení

A SQLite nemá podporu pre databázové obmedzenia, takže ich budeme musieť deaktivovať opätovným prepísaním vhodných metód pre primárny aj cudzí kľúč:

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

A za chvíľu budeme môcť v konfigurácii Spring Boot odkazovať na tento nový dialekt.

4. Dátový zdroj Konfigurácia

Tiež od r Jarná topánka neposkytuje podporu konfigurácie pre databázu SQLite po vybalení z krabice, musíme tiež vystaviť svoje vlastné Dátový zdroj fazuľa:

@Autowired Environment env; @Bean public DataSource dataSource () {final DriverManagerDataSource dataSource = nový DriverManagerDataSource (); dataSource.setDriverClassName (env.getProperty ("driverClassName")); dataSource.setUrl (env.getProperty ("url")); dataSource.setUsername (env.getProperty ("užívateľ")); dataSource.setPassword (env.getProperty ("heslo")); vrátiť dátový zdroj; }

A nakoniec nakonfigurujeme nasledujúce vlastnosti v našom vytrvalosť.vlastnosti spis:

driverClassName = org.sqlite.JDBC url = jdbc: sqlite: memory: myDb? cache = shared username = sa password = sa hibernate.dialect = com.baeldung.dialect.SQLiteDialect hibernate.hbm2ddl.auto = create-drop hibernate.show_sql = pravda

Pamätajte, že musíme zachovať medzipamäť ako zdieľané aby boli aktualizácie databázy viditeľné naprieč viacerými pripojeniami k databáze.

S vyššie uvedenými konfiguráciami sa teda aplikácia spustí a spustí pamäťovú databázu s názvom myDb, ktoré môže zvyšná konfigurácia Spring Data Rest zaberať.

5. Záver

V tomto článku sme vzali ukážku aplikácie Spring Data Rest a nasmerovali ju na databázu SQLite. Aby sme to však mohli urobiť, museli sme vytvoriť vlastný dialekt na prezimovanie.

Nezabudnite si aplikáciu pozrieť na Github. Stačí bežať s mvn -Dspring.profiles.active = sqlite spring-boot: spustiť a prejdite na // localhost: 8080.


$config[zx-auto] not found$config[zx-overlay] not found