From d46af17af415eced441ae2335cf3280e6302ca37 Mon Sep 17 00:00:00 2001 From: Abhinab Kanrar Date: Mon, 15 May 2017 20:41:27 +0530 Subject: [PATCH] HikariCP (#1851) * jvm log forging * jvm log forging * jvm log forging * log forging * adding hikariCP module * try-with-resources * adding employee use case * moving HikariCP to libraries --- core-java/pom.xml | 13 ---- libraries/pom.xml | 11 +++ .../com/baeldung/hikaricp/DataSource.java | 48 +++++++++++++ .../java/com/baeldung/hikaricp/Employee.java | 72 +++++++++++++++++++ .../com/baeldung/hikaricp/HikariCPDemo.java | 38 ++++++++++ .../main/java/com/baeldung/hikaricp/db.sql | 47 ++++++++++++ .../com/baeldung/hikaricp/HikariCPTest.java | 19 +++++ 7 files changed, 235 insertions(+), 13 deletions(-) create mode 100644 libraries/src/main/java/com/baeldung/hikaricp/DataSource.java create mode 100644 libraries/src/main/java/com/baeldung/hikaricp/Employee.java create mode 100644 libraries/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java create mode 100644 libraries/src/main/java/com/baeldung/hikaricp/db.sql create mode 100644 libraries/src/test/java/com/baeldung/hikaricp/HikariCPTest.java diff --git a/core-java/pom.xml b/core-java/pom.xml index ca4a363687..9b107c66c4 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -178,19 +178,6 @@ 2.1.0.1 - - com.zaxxer - HikariCP - 2.6.1 - compile - - - - org.postgresql - postgresql - 42.0.0 - - diff --git a/libraries/pom.xml b/libraries/pom.xml index b8e169c73b..e893572cf9 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -231,6 +231,17 @@ datanucleus-xml 5.0.0-release + + com.zaxxer + HikariCP + 2.6.1 + compile + + + org.postgresql + postgresql + 42.0.0 + diff --git a/libraries/src/main/java/com/baeldung/hikaricp/DataSource.java b/libraries/src/main/java/com/baeldung/hikaricp/DataSource.java new file mode 100644 index 0000000000..996f528172 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/hikaricp/DataSource.java @@ -0,0 +1,48 @@ +package com.baeldung.hikaricp; + +import java.io.PrintWriter; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +public class DataSource { + + private static HikariConfig config = new HikariConfig(); + private static HikariDataSource ds; + + static { +// config = new HikariConfig("datasource.properties"); + +// Properties props = new Properties(); +// props.setProperty("dataSourceClassName", "org.postgresql.ds.PGSimpleDataSource"); +// props.setProperty("dataSource.user", "postgres"); +// props.setProperty("dataSource.password", "postgres"); +// props.setProperty("dataSource.databaseName", "postgres"); +// props.setProperty("dataSource.portNumber", "5432"); +// props.setProperty("dataSource.serverName", "localhost"); +// props.put("dataSource.logWriter", new PrintWriter(System.out)); +// config = new HikariConfig(props); + + config.setJdbcUrl("jdbc:postgresql://localhost:5432/postgres"); + config.setUsername("postgres"); + config.setPassword("postgres"); + config.addDataSourceProperty("cachePrepStmts", "true"); + config.addDataSourceProperty("prepStmtCacheSize", "250"); + config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + ds = new HikariDataSource(config); + +// ds.setJdbcUrl("jdbc:postgresql://localhost:5432/postgres"); +// ds.setUsername("postgres"); +// ds.setPassword("postgres"); + } + + private DataSource() {} + + public static Connection getConnection() throws SQLException { + return ds.getConnection(); + } + +} diff --git a/libraries/src/main/java/com/baeldung/hikaricp/Employee.java b/libraries/src/main/java/com/baeldung/hikaricp/Employee.java new file mode 100644 index 0000000000..5472d5c18c --- /dev/null +++ b/libraries/src/main/java/com/baeldung/hikaricp/Employee.java @@ -0,0 +1,72 @@ +package com.baeldung.hikaricp; + +import java.sql.Date; + +public class Employee { + + private int empNo; + private String ename; + private String job; + private int mgr; + private Date hiredate; + private int sal; + private int comm; + private int deptno; + + public int getEmpNo() { + return empNo; + } + public void setEmpNo(int empNo) { + this.empNo = empNo; + } + public String getEname() { + return ename; + } + public void setEname(String ename) { + this.ename = ename; + } + + public String getJob() { + return job; + } + public void setJob(String job) { + this.job = job; + } + public int getMgr() { + return mgr; + } + public void setMgr(int mgr) { + this.mgr = mgr; + } + public Date getHiredate() { + return hiredate; + } + public void setHiredate(Date hiredate) { + this.hiredate = hiredate; + } + public int getSal() { + return sal; + } + public void setSal(int sal) { + this.sal = sal; + } + public int getComm() { + return comm; + } + public void setComm(int comm) { + this.comm = comm; + } + public int getDeptno() { + return deptno; + } + public void setDeptno(int deptno) { + this.deptno = deptno; + } + + @Override + public String toString() { + return "Employee [empNo=" + empNo + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate=" + + hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]"; + } + +} diff --git a/libraries/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java b/libraries/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java new file mode 100644 index 0000000000..97b5bf5644 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/hikaricp/HikariCPDemo.java @@ -0,0 +1,38 @@ +package com.baeldung.hikaricp; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class HikariCPDemo { + + public static List fetchData() { + final String SQL_QUERY = "select * from emp"; + List employees = null; + try (Connection con = DataSource.getConnection(); + PreparedStatement pst = con.prepareStatement(SQL_QUERY); + ResultSet rs = pst.executeQuery();) { + employees = new ArrayList(); + Employee employee; + while (rs.next()) { + employee = new Employee(); + employee.setEmpNo(rs.getInt("empno")); + employee.setEname(rs.getString("ename")); + employee.setJob(rs.getString("job")); + employee.setMgr(rs.getInt("mgr")); + employee.setHiredate(rs.getDate("hiredate")); + employee.setSal(rs.getInt("sal")); + employee.setComm(rs.getInt("comm")); + employee.setDeptno(rs.getInt("deptno")); + employees.add(employee); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return employees; + } + +} diff --git a/libraries/src/main/java/com/baeldung/hikaricp/db.sql b/libraries/src/main/java/com/baeldung/hikaricp/db.sql new file mode 100644 index 0000000000..1dac59307b --- /dev/null +++ b/libraries/src/main/java/com/baeldung/hikaricp/db.sql @@ -0,0 +1,47 @@ +create table dept( + deptno numeric, + dname varchar(14), + loc varchar(13), + constraint pk_dept primary key (deptno) +); + +create table emp( + empno numeric, + ename varchar(10), + job varchar(9), + mgr numeric, + hiredate date, + sal numeric, + comm numeric, + deptno numeric, + constraint pk_emp primary key (empno), + constraint fk_deptno foreign key (deptno) references dept (deptno) +); + +insert into dept values(10, 'ACCOUNTING', 'NEW YORK'); +insert into dept values(20, 'RESEARCH', 'DALLAS'); +insert into dept values(30, 'SALES', 'CHICAGO'); +insert into dept values(40, 'OPERATIONS', 'BOSTON'); + +insert into emp values( + 7839, 'KING', 'PRESIDENT', null, + to_date('17-11-1981','dd-mm-yyyy'), + 7698, null, 10 +); +insert into emp values( + 7698, 'BLAKE', 'MANAGER', 7839, + to_date('1-5-1981','dd-mm-yyyy'), + 7782, null, 20 +); +insert into emp values( + 7782, 'CLARK', 'MANAGER', 7839, + to_date('9-6-1981','dd-mm-yyyy'), + 7566, null, 30 +); +insert into emp values( + 7566, 'JONES', 'MANAGER', 7839, + to_date('2-4-1981','dd-mm-yyyy'), + 7839, null, 40 +); + +commit; \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/hikaricp/HikariCPTest.java b/libraries/src/test/java/com/baeldung/hikaricp/HikariCPTest.java new file mode 100644 index 0000000000..212d532c13 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/hikaricp/HikariCPTest.java @@ -0,0 +1,19 @@ +package com.baeldung.hikaricp; + +import java.util.List; + +import org.junit.Ignore; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class HikariCPTest { + + @Test + @Ignore + public void givenConnection_thenFetchDbData() { + List employees = HikariCPDemo.fetchData(); + assertEquals(4, employees.size()); + } + +}