Integrering av fjærstøvel med HSQLDB
1. Oversikt
Spring Boot gjør det veldig enkelt å jobbe med forskjellige databasesystemer, uten bryet med manuell avhengighetsadministrasjon.
Mer spesifikt gir Spring Data JPA starter all funksjonaliteten som kreves for sømløs integrasjon med flere Datakilde implementeringer. I denne veiledningen, vi lærer hvordan vi kan integrere Spring Boot med HSQLDB. For å demonstrere hvor enkelt det er å integrere Spring Boot med HSQLDB, Vi lager et enkelt JPA-lagringslag som utfører CRUD-operasjoner på kundenheter ved hjelp av en HSQLDB-database i minnet. Her er vårstartstarteren som vi bruker for å få prøvelagringslaget vårt i gang: Vær oppmerksom på at vi også har inkludert HSQLDB-avhengigheten. Uten den vil Spring Boot prøve å konfigurere en automatisk Datakilde bønne og et JDBC-tilkoblingsbasseng for oss gjennom HikariCP. Som en konsekvens, hvis vi ikke spesifiserer en gyldig Datakilde avhengighet i vår pom.xml fil, får vi en byggfeil. I tillegg, la oss sørge for å sjekke den nyeste versjonen av spring-boot-starter-data-jpa på Maven Central. For å utøve vårt demo-depotlag bruker vi en database i minnet. Det er imidlertid mulig å jobbe med filbaserte databaser også. Vi vil utforske hver av disse metodene i avsnittene nedenfor. La oss ta en titt på hvordan du får en ekstern HSQLDB-server til å kjøre og oppretter en filbasert database. Installasjon av HSQLDB og kjøring av serveren er generelt sett grei. Her er trinnene vi bør følge: Når databasen er satt opp, må vi opprette en forbindelse til den. For å gjøre dette på Windows, la oss gå til databasen søppel mappen og kjør runManagerSwing.bat fil. Dette åpner første skjermbilde for HSQLDB Database Manager, hvor vi kan angi tilkoblingsinformasjonen: På Linux / Unix / Mac, kan vi bruke NetBeans, Eclipse eller IntelliJ IDEA til å opprette databaseforbindelsen gjennom IDEs visuelle verktøy, ved hjelp av samme legitimasjon. I noen av disse verktøyene er det greit å lage en databasetabell enten ved å utføre et SQL-skript i Database Manager eller innenfor IDE. Når vi er koblet til, kan vi opprette en kunder bord: Med bare noen få enkle trinn har vi opprettet en filbasert HSQLDB-database som inneholder en kunder bord. Hvis vi ønsker å koble til den forrige filbaserte databasen fra Spring Boot, er her innstillingene vi bør inkludere i application.properties fil: Alternativt, hvis vi bruker en minnedatabase, bør vi bruke disse: Vær oppmerksom på DB_CLOSE_DELAY = -1 parameter lagt til slutten av URL-en til databasen. Når vi jobber med en database i minnet, må vi spesifisere dette, så JPA-implementeringen, som er i dvalemodus, lukker ikke databasen mens applikasjonen kjører. Med innstillingene for databaseforbindelsen allerede konfigurert, må vi definere våre Kunde enhet: I tillegg må vi implementere et tynt utholdenhetslag som gjør at vi kan ha grunnleggende CRUD-funksjonalitet på vår Kunde JPA-enheter. Vi kan enkelt implementere dette laget ved bare å utvide CrudRepository grensesnitt: Til slutt bør vi sørge for at Spring Boot faktisk kan koble til HSQLDB. Vi kan enkelt oppnå dette ved å bare teste lagringslaget. La oss begynne å teste lageret findById () og findAll () metoder: Til slutt, la oss teste lagre() metode: I denne artikkelen, vi lærte å integrere Spring Boot med HSQLDB, og hvordan du kan bruke enten en filbasert eller minne-database i utviklingen av et grunnleggende JPA-depotlag. Som vanlig er alle kodeeksemplene vist i denne artikkelen tilgjengelig på GitHub.2. Maven-avhengighetene
org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE org.hsqldb hsqldb 2.4.0 runtime
3. Koble til en HSQLDB-database
3.1. Kjører en ekstern HSQLDB-server
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
OPPRETT TABELLkunder (id INT IKKE NULL, navn VARCHAR (45), e-post VARCHAR (45), PRIMÆR NØKKEL (ID));
3.2. De application.properties Fil
spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: hsql: // localhost / testdb spring.datasource.username = sa spring.datasource.password = spring.jpa .hibernate.ddl-auto = oppdatering
spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: mem: testdb; DB_CLOSE_DELAY = -1 spring.datasource.username = sa spring.datasource.password = spring. jpa.hibernate.ddl-auto = opprett
4. Den Kunde Enhet
@Entity @Table (name = "kunder") kunde i offentlig klasse {@Id @GeneratedValue (strategi = GenerationType.AUTO) privat lang id; privat strengnavn; privat streng e-post; // standard konstruktører / settere / getters / toString}
5. Den Kunde Oppbevaringssted
@Repository offentlig grensesnitt CustomerRepository utvider CrudRepository {}
6. Testing av Kunde Oppbevaringssted
@RunWith (SpringRunner.class) @SpringBootTest offentlig klasse CustomerRepositoryTest {@Autowired private CustomerRepository customerRepository; @Test offentlig ugyldig nårFindingCustomerById_thenCorrect () {customerRepository.save (ny kunde ("John", "[email protected]")); assertThat (customerRepository.findById (1L)). isInstanceOf (Optional.class); } @Test offentlig ugyldig nårFindingAllCustomers_thenCorrect () {customerRepository.save (ny kunde ("John", "[e-postbeskyttet]")); customerRepository.save (ny kunde ("Julie", "[email protected]")); assertThat (customerRepository.findAll ()). erInstanceOf (List.class); }}
@Test offentlig ugyldig nårSavingCustomer_thenCorrect () {customerRepository.save (ny kunde ("Bob", "[email protected]")); Kundekunde = customerRepository.findById (1L) .orElseGet (() -> ny kunde ("john", "[email protected]")); assertThat (customer.getName ()). isEqualTo ("Bob"); }
7. Konklusjon