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();
}
这个比较简单。