I am trying to design a Java swing application. I want to experiment and use an MVC type of architecture whereby my UI is separated from the actual logic to access data and
Just create a separate class and delegate to him a getting of connection to database:
public class ConnectionManager {
private static String url = "jdbc:mysql://localhost:3306/prototypeeop";
private static String driverName = "com.mysql.jdbc.Driver";
private static String username = "root";
private static String password = "triala";
private static Connection con;
private static String urlstring;
public static Connection getConnection() {
try {
Class.forName(driverName);
try {
con = DriverManager.getConnection(urlstring, username, password);
} catch (SQLException ex) {
// log an exception. fro example:
System.out.println("Failed to create the database connection.");
}
} catch (ClassNotFoundException ex) {
// log an exception. for example:
System.out.println("Driver not found.");
}
return con;
}
}
Then get the connection in a code as follows:
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
con = ConnectionManager.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
You can either use fancier stuff like Hibernate or if your database usage is simple then you can try Commons DbUtils
String db = "jdbc:h2:mem:;INIT=runscript from 'classpath:/prototypeeop.sql'";
//for H2 in-memory database:
Connection DriverManager.getConnection(db);
Remember the core classes and interfaces in Commons DbUtils are QueryRunner
and ResultSetHandler
.
You can try MySQL JDBC Utilities API for MySQL connectivity.
This API offers very cool features and also fulfill your requirement!
Two ways you can make it
Override determineCurrentLookupKey() method of Spring's AbstractRoutingDataSource class.
You can create a class which will return Connection based on system.