Added HikariCP as connection pool manager for efficient database connection management.
This commit is contained in:
parent
21a3f61152
commit
c62c233778
@ -32,6 +32,7 @@ dependencies {
|
||||
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
|
||||
implementation("org.slf4j:slf4j-api:2.0.16")
|
||||
implementation("com.zaxxer:HikariCP:6.0.0")
|
||||
testImplementation("io.ktor:ktor-server-test-host-jvm")
|
||||
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
||||
}
|
||||
|
@ -84,5 +84,5 @@ data class DatabaseConfig(
|
||||
val user: String,
|
||||
val password: String
|
||||
) {
|
||||
val dbUrl = "jdbc:oracle:thin:@$host:$port:$name"
|
||||
val url = "jdbc:oracle:thin:@$host:$port:$name"
|
||||
}
|
25
src/main/kotlin/net/ipksindia/dao/DatabaseFactory.kt
Normal file
25
src/main/kotlin/net/ipksindia/dao/DatabaseFactory.kt
Normal file
@ -0,0 +1,25 @@
|
||||
package net.ipksindia.dao
|
||||
|
||||
import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import net.ipksindia.config.AppConfig
|
||||
import java.sql.Connection
|
||||
|
||||
class DatabaseFactory private constructor() {
|
||||
private val dataSource: HikariDataSource
|
||||
|
||||
init {
|
||||
val config = HikariConfig()
|
||||
config.jdbcUrl = AppConfig.databaseConfig.url
|
||||
config.username = AppConfig.databaseConfig.user
|
||||
config.password = AppConfig.databaseConfig.password
|
||||
config.maximumPoolSize = 5
|
||||
dataSource = HikariDataSource(config)
|
||||
}
|
||||
|
||||
fun getConnection(): Connection = dataSource.connection
|
||||
|
||||
companion object {
|
||||
val instance = DatabaseFactory()
|
||||
}
|
||||
}
|
@ -1,17 +1,11 @@
|
||||
package net.ipksindia.dao
|
||||
|
||||
import model.TransactionRequest
|
||||
import net.ipksindia.config.AppConfig
|
||||
import java.sql.Date
|
||||
import java.sql.DriverManager
|
||||
import java.sql.ResultSet
|
||||
|
||||
class TransactionDao() {
|
||||
|
||||
private val dbUrl = AppConfig.databaseConfig.dbUrl
|
||||
private val dbUser = AppConfig.databaseConfig.user
|
||||
private val dbPassword = AppConfig.databaseConfig.password
|
||||
|
||||
private val singleTransactionRequestQuery = """
|
||||
SELECT
|
||||
txn_no,
|
||||
@ -69,8 +63,7 @@ class TransactionDao() {
|
||||
""".trimIndent()
|
||||
|
||||
fun updateSuccessTransaction(request: TransactionRequest, transferQueueNumber: String, neftQueueNumber: String) {
|
||||
DriverManager
|
||||
.getConnection(dbUrl, dbUser, dbPassword)
|
||||
DatabaseFactory.instance.getConnection()
|
||||
.use { connection ->
|
||||
connection
|
||||
.prepareStatement(transactionUpdateQuery)
|
||||
@ -100,8 +93,8 @@ class TransactionDao() {
|
||||
}
|
||||
|
||||
fun getTransactionRequest(transactionNumber: String): TransactionRequest? {
|
||||
return DriverManager
|
||||
.getConnection(dbUrl, dbUser, dbPassword)
|
||||
return DatabaseFactory.instance
|
||||
.getConnection()
|
||||
.use { connection ->
|
||||
connection
|
||||
.prepareStatement(singleTransactionRequestQuery)
|
||||
|
Loading…
x
Reference in New Issue
Block a user