mysql数据库的事物与链接池

来源:互联网 发布:淘宝号怎么看注册时间 编辑:程序博客网 时间:2024/06/17 04:47

start transcation 开启事物,最后commit;表示提交事物,所以在这两句之间写的代码称为事物,没有提交commit所有的语句将会回滚。

在实际开发中,发现对象的方法满足不了开发需求时,有三种方法

1.写一个connection子类,覆盖close方法,以增强close方法(这个方法不可行)

2.用包装设计模式,即设计一个自己的类实现接口,然后覆盖所需要增强的方法,其余的方法原样返回,为了做到这一点,我们需要定义一个类,记住原始的类。

3.动态代理

使用dbcp链接池,可以使服务器性能提高,

public class JdbcUtils {
private static DataSource ds=null;
static{
try {
BasicDataSourceFactory factory=new BasicDataSourceFactory();
InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");//这边这个配置文件需要自己修改,不用自己书写,只要修改就可以了,将其放在src下。

Properties prop=new Properties();//新建一个配置文件的类

prop.load(in);
ds=factory.createDataSource(prop);

} catch (Exception e) {

e.printStackTrace();
}

}


public static Connection getConnection() throws SQLException{


return ds.getConnection();
}


public static void release(Connection conn,Statement st,ResultSet rs){

if(rs!=null){
try{
rs.close();   //throw new 
}catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(st!=null){
try{
st.close();
}catch (Exception e) {
e.printStackTrace();
}
st = null;
}
if(conn!=null){
try{
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}


}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下是C3P0框架的核心代码

private static ComboPooledDataSource ds=null;
static{
ds=new ComboPooledDataSource();
try {
ds=new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3307/day16");
ds.setUser("root");
ds.setPassword("root");
ds.setMaxPoolSize(15);
ds.setMinPoolSize(5);
ds.setInitialPoolSize(10);
} catch (PropertyVetoException e) {
e.printStackTrace();
}

}


public static Connection getConnection() throws SQLException{


return ds.getConnection();
}

这个比较简单。

原创粉丝点击