Integrering af fjedersko med HSQLDB
1. Oversigt
Spring Boot gør det virkelig nemt at arbejde med forskellige databasesystemer uden besværet med manuel afhængighedsstyring.
Mere specifikt leverer Spring Data JPA-starter al den nødvendige funktionalitet til problemfri integration med flere Datakilde implementeringer. I denne vejledning vi lærer at integrere Spring Boot med HSQLDB. For at demonstrere, hvor let det er at integrere Spring Boot med HSQLDB, vi opretter et simpelt JPA-lagerlag, der udfører CRUD-operationer på kundenheder ved hjælp af en in-memory HSQLDB-database. Her er Spring Boot-starter, som vi bruger til at få vores prøveopbevaringslag i gang: Bemærk, at vi også har inkluderet HSQLDB-afhængigheden. Uden det forsøger Spring Boot automatisk at konfigurere en Datakilde bønne og en JDBC-forbindelsespulje til os gennem HikariCP. Som en konsekvens, hvis vi ikke angiver en gyldig Datakilde afhængighed i vores pom.xml fil, får vi en byggefejl. Lad os desuden sørge for at kontrollere den nyeste version af spring-boot-starter-data-jpa på Maven Central. Til at udøve vores demo-lagerlag bruger vi en in-memory-database. Det er dog også muligt at arbejde med filbaserede databaser. Vi undersøger hver af disse metoder i afsnittene nedenfor. Lad os se på, hvordan man får en ekstern HSQLDB-server til at køre og opretter en filbaseret database. Installation af HSQLDB og kørsel af serveren er alt i alt ligetil. Her er de trin, vi skal følge: Når databasen er oprettet, skal vi oprette en forbindelse til den. For at gøre dette på Windows, lad os gå til databasen beholder mappen og kør runManagerSwing.bat fil. Dette åbner HSQLDB Database Manager's første skærmbillede, hvor vi kan indtaste forbindelsesoplysningerne: På Linux / Unix / Mac, kan vi bruge NetBeans, Eclipse eller IntelliJ IDEA til at oprette databaseforbindelsen gennem IDE's visuelle værktøjer ved hjælp af de samme legitimationsoplysninger. I et af disse værktøjer er det ligetil at oprette en databasetabel enten ved at udføre et SQL-script i Database Manager eller inden for IDE. Når vi er tilsluttet, kan vi oprette en kunder bord: Med blot et par enkle trin har vi oprettet en filbaseret HSQLDB-database indeholdende en kunder bord. Hvis vi ønsker at oprette forbindelse til den tidligere filbaserede database fra Spring Boot, er her de indstillinger, vi skal medtage i application.properties fil: Alternativt, hvis vi bruger en hukommelsesdatabase, skal vi bruge disse: Bemærk venligst DB_CLOSE_DELAY = -1 parameter tilføjet til slutningen af URL-adressen til databasen. Når vi arbejder med en hukommelsesdatabase, skal vi specificere dette, så JPA-implementeringen, som er i dvaletilstand, lukker ikke databasen, mens applikationen kører. Med indstillingerne for databaseforbindelsen allerede konfigureret, skal vi derefter definere vores Kunde enhed: Derudover er vi nødt til at implementere et tyndt persistenslag, som giver os mulighed for at have grundlæggende CRUD-funktionalitet på vores Kunde JPA-enheder. Vi kan nemt implementere dette lag ved bare at udvide CrudRepository grænseflade: Endelig skal vi sørge for, at Spring Boot faktisk kan oprette forbindelse til HSQLDB. Vi kan let opnå dette ved bare at teste lagerlagret. Lad os begynde at teste lageret findById () og findAll () metoder: Lad os endelig teste Gemme() metode: I denne artikel vi lærte at integrere Spring Boot med HSQLDB, og hvordan man bruger enten en filbaseret eller in-memory-database til udvikling af et grundlæggende JPA-lager. Som sædvanligt er alle kodeeksempler vist i denne artikel tilgængelige på GitHub.2. Maven-afhængighederne
org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE org.hsqldb hsqldb 2.4.0 runtime
3. Oprette forbindelse til en HSQLDB-database
3.1. Kørsel af en ekstern HSQLDB-server
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
Opret TABLE-kunder (id INT IKKE NULL, navn VARCHAR (45), e-mail VARCHAR (45), PRIMÆR NØGLE (ID));
3.2. Det 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 = opdatering
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 = opret
4. Den Kunde Enhed
@Entity @Table (name = "kunder") offentlig klasse kunde {@Id @GeneratedValue (strategi = GenerationType.AUTO) privat lang id; privat strengnavn; privat streng e-mail; // standardkonstruktører / settere / getters / toString}
5. Den Kunde Datalager
@Repository offentlig grænseflade CustomerRepository udvider CrudRepository {}
6. Test af Kunde Datalager
@RunWith (SpringRunner.class) @SpringBootTest offentlig klasse CustomerRepositoryTest {@Autowired private CustomerRepository customerRepository; @Test offentligt ugyldigt nårFindingCustomerById_thenCorrect () {customerRepository.save (ny kunde ("John", "[email protected]")); assertThat (customerRepository.findById (1L)). isInstanceOf (Optional.class); } @Test offentlig ugyldigt nårFindingAllCustomers_thenCorrect () {customerRepository.save (ny kunde ("John", "[email protected]")); customerRepository.save (ny kunde ("Julie", "[email protected]")); assertThat (customerRepository.findAll ()). isInstanceOf (List.class); }}
@Test offentligt ugyldigt nårSavingCustomer_thenCorrect () {customerRepository.save (ny kunde ("Bob", "[email protected]")); Kundekunde = customerRepository.findById (1L) .orElseGet (() -> ny kunde ("john", "[email protected]")); assertThat (customer.getName ()). erEqualTo ("Bob"); }
7. Konklusion