Oracle Connection Pooling with Spring

1. Áttekintés

Az Oracle az egyik legnépszerűbb adatbázis a nagy termelési környezetekben. Tehát tavaszi fejlesztőként nagyon gyakori, hogy ezekkel az adatbázisokkal kell dolgozni.

Ebben az oktatóanyagban arról fogunk beszélni, hogy miként valósíthatjuk meg ezt az integrációt.

2. Az adatbázis

Az első dolog, amire szükségünk van, természetesen az adatbázis. Ha még nincs telepítve, akkor beszerezhetjük és telepíthetjük az Oracle Database Software Downloads alkalmazásban elérhető bármelyik adatbázist. De ha nem akarunk semmilyen telepítést végrehajtani, akkor elkészíthetjük az Oracle adatbázis-képeinek bármelyikét is a Docker számára.

Ebben az esetben egy Oracle Database 12c 2. kiadás (12.2.0.2) Standard Edition Docker kép. Következésképpen ez megakadályozza, hogy új szoftvereket kelljen telepítenünk a számítógépünkre.

3. Kapcsolat-pooling

Most már készen áll az adatbázis a bejövő kapcsolatokra. Ezután ismerkedjünk meg néhány különböző módszerrel a kapcsolat-pooling tavasszal történő elvégzésére.

3.1. HikariCP

A Spring-hez való kapcsolattartás legegyszerűbb módja az automatikus konfiguráció. A tavasz-boot-starter-jdbc függőség tartalmazza a HikariCP-t, mint az előnyben részesített pooling adatforrást. Ezért, ha egy pillantást vetünk a mi pom.xml meglátjuk:

 org.springframework.boot spring-boot-starter-data-jpa 

A spring-boot-starter-data-jpa a függőség magában foglalja a tavasz-boot-starter-jdbc függőség számunkra átmenetileg.

Most már csak hozzá kell adnunk a konfigurációnkat a alkalmazás.tulajdonságok fájl:

# OracleDB kapcsolati beállítások spring.datasource.url = jdbc: oracle: thin: @ // localhost: 11521 / ORCLPDB1 spring.datasource.username = books spring.datasource.password = books spring.datasource.driver-class-name = oracle. jdbc.OracleDriver # HikariCP beállítások spring.datasource.hikari.minimumIdle = 5 spring.datasource.hikari.maximumPoolSize = 20 spring.datasource.hikari.idleTimeout = 30000 spring.datasource.hikari.maxLifetime = 2000000 spring.datasource.hik 30000 spring.datasource.hikari.poolName = HikariPoolBooks # JPA beállítások spring.jpa.database-platform = org.hibernate.dialect.Oracle12cDialect spring.jpa.hibernate.use-new-id-generator-mappings = false spring.jpa.hibernate .ddl-auto = létrehozás

Mint látható, három különböző szakaszkonfigurációs beállítással rendelkezünk:

  • A OracleDB kapcsolati beállítások szakaszban konfiguráltuk a JDBC kapcsolat tulajdonságait, mint mindig
  • A HikariCP beállítások szakaszban konfiguráljuk a HikariCP kapcsolat poolingot. Ha speciális konfigurációra van szükségünk, akkor ellenőrizzük a HikariCP konfigurációs tulajdonságok listáját
  • A JPA beállításai szakasz a Hibernate használatának néhány alapvető konfigurációja

Csak erre van szükségünk. Nem lehet könnyebb, nem?

3.2. Tomcat és Commons DBCP2 kapcsolatkészlet

Tavasz a HikariCP-t ajánlja teljesítményéhez. Másrészt támogatja a Tomcat és a Commons DBCP2 programot a Spring Boot automatikusan konfigurált alkalmazásokban.

Megpróbálja használni a HikariCP-t. Ha nem érhető el, akkor megpróbálja használni a Tomcat poolingot. Ha egyik sem áll rendelkezésre, akkor megpróbálja használni a Commons DBCP2 szoftvert.

Megadhatjuk a használni kívánt kapcsolatkészletet is. Ebben az esetben csak egy új ingatlant kell hozzáadnunk a tulajdonunkhoz alkalmazás.tulajdonságok fájl:

spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource

Ha meghatározott beállításokat kell konfigurálnunk, rendelkezésre állnak az előtagjaik:

  • spring.datasource.hikari. * a HikariCP konfigurálásához
  • spring.datasource.tomcat. * a Tomcat pooling konfigurációhoz
  • spring.datasource.dbcp2. * a Commons DBC2 konfigurációhoz

És valójában beállíthatjuk tavaszi.datasource.type bármely másnak Adatforrás végrehajtás. Nem szükséges, hogy bármelyik fent említett három legyen.

De ebben az esetben csak egy alapkonfigurációnk lesz. Sok esetben lesz szükség néhány speciális konfigurációra. Nézzük meg néhányukat.

3.3. Oracle Universal Connection Pooling

Ha fejlett konfigurációkat akarunk használni, akkor kifejezetten meg kell határoznunk a Adatforrás babot és állítsa be a tulajdonságokat. Valószínűleg ennek legegyszerűbb módja a @ Konfiguráció és @Bab annotációk.

Az Oracle Universal Connection Pool (UCP) a JDBC számára teljes körű megvalósítást biztosít a JDBC-kapcsolatok gyorsítótárazásához. Újak létrehozása helyett újból felhasználja a kapcsolatokat. Ez egy sor tulajdonságot is ad nekünk a készlet viselkedésének testreszabásához.

Ha az UCP-t akarjuk használni, hozzá kell adnunk a következő Maven-függőségeket:

 com.oracle.database.jdbc ojdbc8 com.oracle.database.ha ons com.oracle.database.jdbc ucp 

Most készen állunk az UCP kapcsolatkészlet deklarálására és konfigurálására:

@Configuration @Profile ("oracle-ucp") nyilvános osztály OracleUCPConfiguration {@Bean public DataSource dataSource () dobja az SQLException {PoolDataSource dataSource = PoolDataSourceFactory.getPoolDataSource (); dataSource.setUser ("könyvek"); dataSource.setPassword ("könyvek"); dataSource.setConnectionFactoryClassName ("oracle.jdbc.pool.OracleDataSource"); dataSource.setURL ("jdbc: oracle: thin: @ // localhost: 11521 / ORCLPDB1"); dataSource.setFastConnectionFailoverEnabled (true); dataSource.setInitialPoolSize (5); dataSource.setMinPoolSize (5); dataSource.setMaxPoolSize (10); return dataSource; }}

A fenti példában testre szabtunk néhány készlet tulajdonságot:

  • setInitialPoolSize meghatározza a készlet kezdeményezése után létrehozott elérhető kapcsolatok számát
  • setMinPoolSize meghatározza a rendelkezésre álló és kölcsönzött kapcsolatok minimális számát, amelyet medencénk fenntart, és
  • setMaxPoolSize meghatározza a rendelkezésre álló és kölcsönzött kapcsolatok maximális számát, amelyet medencénk fenntart

Ha további konfigurációs tulajdonságokat kell hozzáadnunk, ellenőriznünk kell a PoolDataSource JavaDoc vagy a fejlesztői útmutató.

4. Régebbi Oracle verziók

A 11.2 előtti verziókhoz, például az Oracle 9i vagy a 10g, létre kellene hoznunk egy OracleDataSource az Oracle Universal Connection Pooling használata helyett.

Miénkben OracleDataSource például bekapcsoljuk a kapcsolat gyorsítótárazását a következőn keresztül: setConnectionCachingEnabled:

@Configuration @Profile ("oracle") nyilvános osztály OracleConfiguration {@Bean public DataSource dataSource () dobja az SQLException {OracleDataSource dataSource = új OracleDataSource (); dataSource.setUser ("könyvek"); dataSource.setPassword ("könyvek"); dataSource.setURL ("jdbc: oracle: thin: @ // localhost: 11521 / ORCLPDB1"); dataSource.setFastConnectionFailoverEnabled (true); dataSource.setImplicitCachingEnabled (true); dataSource.setConnectionCachingEnabled (true); return dataSource; }}

A fenti példában a OracleDataSource a kapcsolat poolinghoz és konfigurált néhány paramétert. Az összes konfigurálható paramétert ellenőrizhetjük a OracleDataSource JavaDoc.

5. Következtetés

Manapság az Oracle adatbázis-kapcsolati készletének konfigurálása a Spring használatával nagyszerű dolog.

Láttuk, hogyan kell ezt megtenni csak az autokonfiguráció segítségével és programozottan. Annak ellenére, hogy a Spring a HikariCP használatát javasolja, más lehetőségek is rendelkezésre állnak. Óvatosnak kell lennünk, és a jelenlegi igényeinknek megfelelő megoldást kell választanunk.

És mint mindig, a teljes példa megtalálható a GitHubon.