From 03c209b60e639d0724b6630bca34c8e5e5b174aa Mon Sep 17 00:00:00 2001 From: Taras Boychuk Date: Thu, 27 Jun 2024 07:00:17 +0300 Subject: [PATCH 1/2] Task: Implement a custom Connection Pool * prep a simple demo --- lesson-demo/pom.xml | 10 ++++++- .../src/main/java/com/bobocode/DemoApp.java | 28 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/lesson-demo/pom.xml b/lesson-demo/pom.xml index 80b50add..dc4a73a3 100644 --- a/lesson-demo/pom.xml +++ b/lesson-demo/pom.xml @@ -10,5 +10,13 @@ 4.0.0 lesson-demo - + + + + org.postgresql + postgresql + 42.7.3 + + + \ No newline at end of file diff --git a/lesson-demo/src/main/java/com/bobocode/DemoApp.java b/lesson-demo/src/main/java/com/bobocode/DemoApp.java index 21d5205b..6c256a5a 100644 --- a/lesson-demo/src/main/java/com/bobocode/DemoApp.java +++ b/lesson-demo/src/main/java/com/bobocode/DemoApp.java @@ -1,7 +1,33 @@ package com.bobocode; +import lombok.SneakyThrows; +import org.postgresql.ds.PGSimpleDataSource; + +import javax.sql.DataSource; + public class DemoApp { + @SneakyThrows public static void main(String[] args) { - + DataSource dataSource = initDb(); + var start = System.nanoTime(); + + for (int i = 0; i < 20; i++) { + try (var connection = dataSource.getConnection()) { + try (var selectStatement = connection.createStatement()) { + selectStatement.executeQuery("select random()"); // just to call the DB + } + } + } + + var end = System.nanoTime(); + System.out.println((end - start) / 1000_000 + "ms"); + } + + private static DataSource initDb() { // todo: refactor to use a custom pooled data source + var dataSource = new PGSimpleDataSource(); + dataSource.setURL("jdbc:postgresql://0.tcp.eu.ngrok.io:10874/postgres"); + dataSource.setUser("bobouser"); + dataSource.setPassword("bobopass"); + return dataSource; } } From d8da3b22d0a6d09e7455af3bb8f790a7be6f79ae Mon Sep 17 00:00:00 2001 From: Taras Boychuk Date: Thu, 27 Jun 2024 08:27:50 +0300 Subject: [PATCH 2/2] Task: Implement a custom Connection Pool * change address --- lesson-demo/pom.xml | 5 +++++ lesson-demo/src/main/java/com/bobocode/DemoApp.java | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lesson-demo/pom.xml b/lesson-demo/pom.xml index dc4a73a3..cc65bf59 100644 --- a/lesson-demo/pom.xml +++ b/lesson-demo/pom.xml @@ -17,6 +17,11 @@ postgresql 42.7.3 + + org.hibernate + hibernate-hikaricp + 5.4.10.Final + \ No newline at end of file diff --git a/lesson-demo/src/main/java/com/bobocode/DemoApp.java b/lesson-demo/src/main/java/com/bobocode/DemoApp.java index 6c256a5a..c2015c00 100644 --- a/lesson-demo/src/main/java/com/bobocode/DemoApp.java +++ b/lesson-demo/src/main/java/com/bobocode/DemoApp.java @@ -1,5 +1,6 @@ package com.bobocode; +import com.zaxxer.hikari.HikariDataSource; import lombok.SneakyThrows; import org.postgresql.ds.PGSimpleDataSource; @@ -25,7 +26,7 @@ public static void main(String[] args) { private static DataSource initDb() { // todo: refactor to use a custom pooled data source var dataSource = new PGSimpleDataSource(); - dataSource.setURL("jdbc:postgresql://0.tcp.eu.ngrok.io:10874/postgres"); + dataSource.setURL("jdbc:postgresql://0.tcp.eu.ngrok.io:11708/postgres"); dataSource.setUser("bobouser"); dataSource.setPassword("bobopass"); return dataSource;