JDBCはMysql読み書き分離テストを行う
2881 ワード
プログラムに2つのデータソースを追加し、それぞれの読み取りと書き込みに対応します.
テストクラス:
出力:
# #
DBDriver=com.mysql.jdbc.Driver
url=jdbc\:mysql\:loadbalance\://10.11.0.75,172.16.0.202\:3306/DB_TEST7?roundRobinLoadBalance\=true&characterEncoding\=UTF-8
name=TESTUSER
pass=TESTPWD
characterEncoding=utf8
# #
DBDriver=com.mysql.jdbc.Driver
url=jdbc\:mysql\:loadbalance\://10.11.2.126\:3306/DB_TEST7?roundRobinLoadBalance\=true&characterEncoding\=UTF-8
name=TESTUSER
pass=TESTPWD
characterEncoding=utf8
テストクラス:
/**
*
* @author
*
*/
public class UtilDao {
static Properties properties = null;
public UtilDao(String rw){
//
properties = new Properties();
java.io.InputStream in = null;
if(rw.equals("R")){
in = (java.io.InputStream) this.getClass()
.getResourceAsStream("/mysqlDBR.properties");
}else if (rw.equals("W")){
in = (java.io.InputStream) this.getClass()
.getResourceAsStream("/mysqlDBW.properties");
}
try {
properties.load(in);
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
public Connection getConn(){
Connection connection = null;
try{
Class.forName(properties.getProperty("DBDriver"));
connection = DriverManager.getConnection(properties.getProperty("url"),properties.getProperty("name"),properties.getProperty("pass"));
}catch (Exception err) {
System.out.println(" ConDB-->getCon()____JDBC !");
err.printStackTrace();
return null;
}
return connection;
}
public static void main(String[] args) throws SQLException {
UtilDao uW = new UtilDao("W");
UtilDao uR = new UtilDao("R");
Connection connR = uR.getConn(); //connectionsToHostsMap()
Connection connW = uW.getConn(); //connectionsToHostsMap()
connW.setAutoCommit(false); // False
connR.setAutoCommit(false); // False
String inSql = "insert into city(sname) values(' ')";
String sql = "select * from city where sname = ' '";
Statement sW = connW.createStatement();
Statement sR = connR.createStatement();
try {
sW.execute(inSql);
connW.commit();
} catch (Exception e) {
connW.rollback();
e.printStackTrace();
}
ResultSet r = sR.executeQuery(sql);
int l = 0 ;
while (r.next()){
System.out.println(r.getString("sname")+" " +r.getString("Id")+" :"+l+" ");
l++;
}
r.close();
sW.close();
sR.close();
connW.close();
connR.close();
}
出力:
737 :0
738 :1