您的位置:首页 > 其它

第一次写的博客,关于jdbcDBUtil的那些事

2014-03-24 19:57 211 查看
一、连接到数据库
public class ConnUtils { //这个类是静态工厂方法
private static Connection conn;
static {
try {
Class.forName("com.mysql.jdbc.Driver");//关于这句话,在jdbc4.0以后不加这句话也可以运行,连接到数据库,
//由于连接数据库的jar包的版本不一样,如果jdbc4.0 Driver必须包括META-INF/services/java.sql.Driver文件。
//该文件里面必须包括java.sql.Driver
//的JDBC驱动程序实现的名称 该文件自动帮用户加载
String url = "jdbc:mysql:///db909?characterEncoding=UTF8";
conn = DriverManager.getConnection(url, "root", "root");
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
public static Connection getCon() {//这个方法就是静态工厂方法 和单例模式相似 不过单例类是生产自己 而生产工厂是生产别的
return conn;
}
以下代码完全可以产生两条语句
sun.jdbc.odbc.JdbcOdbcDriver@10ef90c 是sun公司自动加载的
com.mysql.jdbc.Driver@1ded0fd 是在jar包中的META-INF/services/java.sql.Driver文件 加载实现的
public static void main(String[] args){
Enumeration<Driver> en = DriverManager.getDrivers();
while(en.hasMoreElements()){
Driver dd = en.nextElement();
System.err.println(dd);
}
}
当以上的两块代码都写的话就只会产生两条语句,因为如果已经注册了的话DriverManager.registerDriver里面已经做出了判断了,就不会再注册了 就相当于一个Set列表不能重复的存放东西
二、连接池
在Servlet是单例的 每一次刷新页面,Servlet所发出的请求都只是一个不会变
1)事务的特性:
A、原子性 组成事务的处理语句形成了一个逻辑单元,不能只执行其中的一个部分
B、一致性 在事务处理执行之前,数据库是一致的(数据库数据完整性约束)
C、隔离性 一个事务处理对另一个事务处理的影响
D、持续性 事务处理的效果能够被永久保存下来
一个事务只会有一个结果:要么成功,要么失败
2)对于多个线程的数据库的操作,a 请求一个连接getCon() -->
b 返回一个连接 -->
c 设置事务的开始 con.setAutoCommit(false); -->
d 执行保存insert(xxx)-->
e sleep(4000); 使主线程休息 -->
f 启动第二个线程 --->
g获取连接 -->
h 设置事务的开始setAutoCommit(false); -->
i 写入数据(tom)-->
j提交数据con.commit()-->
k 关闭连接
========对于此操作会使Connection里面的数据一起提交到数据库

*我们的程序不会只有一个连接 会有多个 所以 在获取到连接的时候应该把连接用完了 还回去 以便于下个连接的顺利进行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: