当connection的autoCommit=false时,sql执行更新但未commit时,其它更新该条数据的sql是等待还是顺利执行?
其它update的sql会等待,一定时间后还会超时。 select语句正常执行。
只要把commit设置成手动提交,sql更新语句执行之后到commit完成这段时间,会一直占有该条数据的锁。 原来,sql执行完毕之后还在占有行锁。
DBUtil StringUtil
db.properties
抽象工厂模式
写了一个简单的测试类,没想到搞到最后连设计模式都出来了。忽然想到如果数据库从mysql切换到oracle怎么办?所以直接复习了一遍抽象工厂模式,另外考虑以后可能会遇到使用的通用工具类,所以就直接把代码重构了一下。 嗯,看起来应该很清爽,代码即注释!
jdbc的工作原理是怎样的?驱动是怎么加载的? java.sql.Driver的加载方式有3种:
- System.getProperty("jdbc.drivers")
- /META-INF/services/java.sql.Driver文件里配置com.mysql.jdbc.Driver
- Class.forname("com.mysql.jdbc.Driver")
Class.forname会执行类的初始化,即static block,static field。(不是实例化)
分析的比较好的博客 JDBC系列 之 驱动加载原理全面解析
可以根据JDBC URL规则写一个自己的Driver Sample JDBC driver connection URL formats 常用数据库 JDBC URL 格式 例如mysql的url syntax