diff --git a/jdbc/src/test/java/com/example/jdbc/connection/ConnectionTest.java b/jdbc/src/test/java/com/example/jdbc/connection/ConnectionTest.java new file mode 100644 index 00000000..3de78dce --- /dev/null +++ b/jdbc/src/test/java/com/example/jdbc/connection/ConnectionTest.java @@ -0,0 +1,55 @@ +package com.example.jdbc.connection; + +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.jdbc.datasource.DriverManagerDataSource; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import static com.example.jdbc.connection.ConnectionConst.*; + +@Slf4j +public class ConnectionTest { + + @Test + void driverManager() throws SQLException { + Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD); + Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD); + + log.info("connection={}, class={}", con1, con1.getClass()); + log.info("connection={}, class={}", con2, con2.getClass()); + } + + @Test + void dataSourceDriverManager() throws SQLException { + // DriverManagerDataSource - 항상 새로운 커넥션을 획득 + DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD); + useDataSource(dataSource); + } + + @Test + void dataSourceConnectionPool() throws SQLException, InterruptedException { + // 커넥션 풀링 + HikariDataSource dataSource = new HikariDataSource(); + dataSource.setJdbcUrl(URL); + dataSource.setUsername(USERNAME); + dataSource.setPassword(PASSWORD); + dataSource.setMaximumPoolSize(10); + dataSource.setPoolName("MyPool"); + + useDataSource(dataSource); + Thread.sleep(1000); + } + + private void useDataSource(DataSource dataSource) throws SQLException { + Connection con1 = dataSource.getConnection(); + Connection con2 = dataSource.getConnection(); + + log.info("connection={}, class={}", con1, con1.getClass()); + log.info("connection={}, class={}", con2, con2.getClass()); + } +}