如何解决如何使用hikaricp -java
场景:
•设计了一个数据访问对象(DAO)来根据项目要求执行JDBC操作。
•实现了Hikaricp库来处理数据源并实现连接池
•Hikaricp库在单例类(DatabaseConnection.java)中实现,该类使用MySQL凭据设置数据源并返回数据源。
•DAOFactory接口具有用于执行SQL操作的抽象方法
•DAO_Implementaion类实现DAOFactory,并且每个方法都从(DatabasConnection.java)类访问datasource.getconnection。
•在Try-with块中关闭了连接和预准备语句,并且我没有在任何地方关闭连接以维护池。
•每个查询都从DatabaseConnection.java类访问数据源并获取连接。这会导致与MySQL服务器有关的错误-连接过多。
如何使用Hikaricp或以任何方式在整个应用程序中实现单个连接?
我已附上我的代码。请调查一下。
请让我知道发生了什么问题以及应该改进什么?
公共类DatabaseConnection {
'
//常量
private static final String url = "jdbc:mysql://localhost:3306/";
private static final String dbName = "#";
private static final String driver="com.mysql.jdbc.Driver";
private static final String userName = "root";
private static final String password = "#";
//http://zetcode.com/articles/hikaricp/
private static HikariDataSource dataSource;
/**
* A static method which uses HikariDataSource Connection Pooling library to connect with the MySQL Database.
* Accepts and Sets few JDBC details like User Name,Password,URL,Driver Name and many more.
* @return This methods returns HikariDataSource
* @throws SQLException and CasbnException
*/
public static HikariDataSource getDataSource() throws SQLException,CasbnExceptions {
try {
//create the object of HikariDataSource
dataSource=new HikariDataSource();
//set up the JDBC details (username,password,url,driver)
dataSource.setDriverClassName(driver);
dataSource.setJdbcUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(password);
}
catch(Exception e)
{
e.printStackTrace();
}
return dataSource;
}
public static void CloseConnection()
{
dataSource.close();
}
}
公共接口DAOFactory {
//Login
public Object Login(String email,String pass) throws SQLException;
//To Fetch Company Name After Logging In
public String getCompanyName(String Email) throws SQLException;
//Individual Company Details
public Pojos Individual_Company_detail(String CompanyName) throws SQLException;
//To Users of that Company
public ArrayList<Pojos> getUserDetails(int id) throws SQLException;
//Team Channels
public ArrayList<Pojos> GetTeamChannels(int id) throws SQLException;
//Call Details of the respective Company
public ArrayList<Pojos> GetCallDetails(String UserName,int id) throws SQLException;
// Get Info for Editing a User
public Pojos GetUserById(int id) throws SQLException;
//Update the user
public boolean UpdateUser(Pojos po) throws SQLException;
//Delete the User
public boolean DeleteUser(int id) throws SQLException;
}
公共类DAO_Implementation实现DAOFactory {
///将所有SQL查询声明为私有的static和final
String Login="Query";
String getCompanyName="Query";
//------------------------------------------------------
//Constants
private String name;
private POJOs Po;
private ArrayList<Pojos> ar;
// Override Methods
@Override
public Object Login(String email,String pass) throws SQLException {
System.out.println("Inside Login Method..");
// Put Connection code inside 'try' which automatically closes the connection.
try
(Connection con=DatabaseConnection.getDataSource().getConnection();
PreparedStatement pst = con
.prepareStatement(Login);){
pst.setString(1,email);
pst.setString(2,pass);
ResultSet rs = pst.executeQuery();
if(rs.next())
{
System.out.println(rs.getString(1));
Po=new Pojos(rs.getString("email"),rs.getString("password"));
}
}
catch(Exception e) {
e.printStackTrace();
}
return Po;
}
@Override
public String getCompanyName(String Email) throws SQLException {
// TODO Auto-generated method stub
try
(Connection con=DatabaseConnection.getDataSource().getConnection();
PreparedStatement pst = con
.prepareStatement(getCompanyName)){
pst.setString(1,Email);
ResultSet rs = pst.executeQuery();
rs.next();
Name=rs.getString(1);
}
catch(Exception e)
{
e.printStackTrace();
}
return Name;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。