您的位置:首页 > 其它

JDBC学习笔记(4)

2015-06-10 13:50 288 查看
回顾,项目的开发步骤:
1) com.zhtm.sql包 建表SQL语句
2) com.zhtm.conf包 创建.properties文件
3) com.zhtm.util包 创建JdbUtil工具类

static{
InputStream is = JdbcUtil.class.getResourceAsStream("/com/zhtm/conf/db.properties");
prop.load(is);
}
public static Connection getConnection() throws Exception{}
public static void release(rs, stm, conn) throws Exception{}
4) com.zhtm.test包 测试JdbcUtil的创建连接方法
5) com.zhtm.entity包 创建实体类
根据表结构,创建实体类
字段 属性
get/set方法
6) com.zhtm.dao包 创建PersonDao类

public void insert(Person p) throws Exception{}
public void update(Person p)throws Exception{}
public void delete(int no)throws Exception{}
public List<Person> selectAll()throws Exception{}
public Person selectOne(int no) throws Exception{}
注意:写1个方法,测试1个方法

JDBC中的分层:
一、数据访问层DAO【重点】
作用: 对数据库进行增删改查操作。(ORM)
包:com.zhtm.dao
类命名规范:表名+Dao

二、业务层Service【重点】
作用:专注于实现用户的业务需求。通常业务步骤 最终落实到 增删改查操作上。
注意:业务层 必须进行事务的处理,确保所有步骤都成功业务成功;有一个步骤失败,该业务失败。
包结构:com.zhtm.service
类命名规范:和实际需求相关(BankService)

JDBC中,默认1条SQL语句执行后,事务会自动提交。

事务的提交/回滚:
1) 修改事务的提交方式 为手动提交

conn.setAutoCommit(false);            //true,代表自动提交
2) 事务提交/回滚

conn.commit();
conn.rollback();

业务方法的书写步骤【重点】:
1) 调用工具类,获取连接
2) 设置事务的提交方式 为手动提交
3) 分别调用DAO的不同方法,实现业务步骤
4) 事务提交/回滚
5) 调用工具类的方法,释放资源

彻底解决事务控制以及多线程并发访问的问题【重难点】:
使用线程局部变量 ThreadLocal类:
ThreadLocal t = new ThreadLocal();
t.set(obj); //往线程变量中设值
obj = t.get(); //获取线程局部变量的值
t.remove(); //删除线程局部变量的值

解决方案:
1) 修改JdbcUtil的代码:
a) 增加成员变量

private static final ThreadLocal<Connection> t = new ThreadLocal<Connection>();
b) 修改getConnection方法

Connection conn = t.get();
if (conn == null){
//注册驱动
//创建连接
//给线程局部变量设值
t.set(conn);
}
c) 修改release方法

if (conn!=null){
conn.close();
t.remove();//删除线程局部变量中的值 *****必须要有*****
}
2) 在DAO层不能关闭conn,应该在service层。

三、显示层View
作用:专注于 提供用户的输入/输出界面。
该层不属于JDBC的内容,属于CoreJava的内容。

四、分层的好处
1、各司其职
2、有利于团队建设

总结,项目开发步骤:
1) com.zhtm.sql包 建表语句
2) com.zhtm.conf包 创建配置文件db.properties
3) com.zhtm.util包 创建JdbcUtil
4) com.zhtm.test包 测试JdbcUtil的getConnection方法
5) com.zhtm.entity包 根据表结构,创建实体类
6) com.zhtm.dao包 先创建接口,后定义实现类
注意,写1个方法,测试1个方法。
7) com.zhtm.service包 先创建接口,后定义实现类
注意,写1个方法,测试1个方法。
8) com.zhtm.view包 创建显示显示面类
9) 测试整个项目
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JDBC 事务控制