Java 数据源与简单连接数据库
最好的方法是什么?我需要连接许多远程数据库来解决来自Restful web服务的许多请求。我在想两个解决方案:Java 数据源与简单连接数据库,java,.net,database,connection,datasource,Java,.net,Database,Connection,Datasource,最好的方法是什么?我需要连接许多远程数据库来解决来自Restful web服务的许多请求。我在想两个解决方案: 每个远程数据库一个数据源,到每个数据源的连接就像一个单例模式 每个远程数据库都有一个简单的连接,也就是一个与每个数据库连接的单例模式 第一种方法的一个例子如下(vía msdn): 对于第二种方法,单例示例可以是: public java.sql.Connection conn; private static Statement statement; public static My
public java.sql.Connection conn;
private static Statement statement;
public static MysqlConnect db;
private MysqlConnect() {
String url= "jdbc:mysql://localhost:3306/";
String dbName = "Banco";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "123456";
try {
Class.forName(driver).newInstance();
this.conn = (java.sql.Connection)DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to DataBase: " + dbName);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException sqle) {
System.out.println("Error Inesperado en MysqlConnect" + sqle.toString());
}
}
/**
*Method for connect to a database
* @return MysqlConnect Database connection object
*/
public static synchronized MysqlConnect getDbCon() {
if ( db == null ) {
try {
db = new MysqlConnect();
statement = db.conn.createStatement();
} catch (SQLException ex) {
Logger.getLogger(MysqlConnect.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Connection to DB: OK");
return db;
}
这取决于数据库和查询之间的关系。如果有许多查询要访问单个数据库,例如用户数据库,那么您将需要多个到该数据库的连接,否则您的线程将阻塞该资源 最灵活的方法是为每个远程数据库提供一个连接池,并对每个连接池进行配置,以使它们具有适当数量的可用连接,同时考虑到它们在任何单个REST事务期间被查询的可能性
一个好的起点可能是查看Tomcat数据源池。请注意,无论是否使用Tomcat作为Web服务器,您都可以使用它。连接不能由多个线程同时使用,而数据源可以
public java.sql.Connection conn;
private static Statement statement;
public static MysqlConnect db;
private MysqlConnect() {
String url= "jdbc:mysql://localhost:3306/";
String dbName = "Banco";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "123456";
try {
Class.forName(driver).newInstance();
this.conn = (java.sql.Connection)DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to DataBase: " + dbName);
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException sqle) {
System.out.println("Error Inesperado en MysqlConnect" + sqle.toString());
}
}
/**
*Method for connect to a database
* @return MysqlConnect Database connection object
*/
public static synchronized MysqlConnect getDbCon() {
if ( db == null ) {
try {
db = new MysqlConnect();
statement = db.conn.createStatement();
} catch (SQLException ex) {
Logger.getLogger(MysqlConnect.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Connection to DB: OK");
return db;
}