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());
+ }
+
+}