JDBC事务--软件开发三层架构--ThreadLocal
JDBC事务--软件开发三层架构--ThreadLocal
一.JDBC事务
1.概述:
事务是指逻辑上的一组操作!这一组操作,通常认为是一个整体,不可拆分!
特点:同生共死;事务内的这一组操作要么全部成功,要么全部失败!
作用:保证逻辑操作的完整性,安全性!
2.使用(3种方式)
1)面向数据库,使用SQL语句控制
开启;(告诉数据库,我们要开始做事情了,)
START TRANSACTION;
提交;(确认上面所有的操作要生效);
COMMIT;
回滚;(撤销上面所做的所有操作);
ROLLBACK;
2)面向JDBC-Connection 接口(java.sql)
常用方法:
void setAutoCommit(boolean autoCommit) throws SQLException{}:参数默认为true,若要开启,需设置为false;
void commit()throws SQLException{}:提交事务;
void rollback()throws SQLException{}:回滚事务;
3)面向工具DBUtils--QueryRunner 类(org.apache.commons.dbutils);使用Connection对象控制
构造方法:(必须使用空参构造)
public QueryRunner()
常用方法:
public <T> T query(Connection conn,String sql,ResultSetHandler<T> rsh,Object... params)
throws SQLException{}:参数中必须传递开启事务后的Connection对象;执行sql后自己提交或回滚事务;The object returned by the handler.
public int update(Connection conn,String sql,Object... params)throws
SQLException{}:参数中必须传递开启事务后的Connection对象;执行sql后自己提交或回滚事务;Returns:The number of rows updated.
3.注意事项:
1):事务的开启只有一个入口;
2):提交或回滚都是结束事务;
3):如果没有手动开启事务,默认每一条sql语句就是一个独立的事务,当sql执行结束的时候,自动提交了;
4):如果程序执行过程中出现异常情况,默认是回滚;
二.软件开发三层架构
1.概述
所谓的3层架构是一个固定模式,使用这个模式可以快速开发软件;
好处:
1):高内聚;(相似的代码或相似的功能可以集中在一起)
2):低耦合;(代码可以同时开发,只是结果联系在一起)
3):可维护;
4):可重用;
5):可扩展;
2.具体结构:
1):表现层web;(主要用于数据的收集与展示)
2):业务层service;(业务逻辑控制,通常事务会在这里开启并结束)
3):持久层DAO(Data Access Object);(数据层)(对数据进行CRUD,操作数据库的代码写在这里);
4).类:domain;存放javabean
5).工具包:utils;存放工具
三.ThreadLocal<T> 类(java.lang)
概述:
ThreadLocal是一个容器,该容器中定义了一个特殊的变量,该变量保存的是将来线程传递过来的值;每个线程存值的时候,会存在特殊的变量的副本中;将来这些线程从变量中获取的值互不影响,不会出现线程安全的问题;
适用场景:
当一个线程中调用多个方法,不想进行参数传递的时候,可以使用ThreadLocal作为载体,让该线程中的所有方法获取一个值;
定义:public class ThreadLocal<T> extends Object
构造方法:(空参构造)
public ThreadLocal()
常用方法:
public void set(T value){}:the value to be stored in the current thread's copy of this thread-local
public T get(){}:Returns:the current thread's value of this thread-local
转载于:https://www.cnblogs.com/huguangqin/p/7137587.html
JDBC事务--软件开发三层架构--ThreadLocal相关推荐
- 关于J2EE开发三层架构
现在开发web大多都是基于MVC的三层架构,三层架构优势什么呢? 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL). ...
- 基于LINQ to SQL的WEB开发三层架构(2)
初始的Northwind.dbml文件代码如下: #pragma warning disable 1591 //-------------------------------------------- ...
- 有了门面,程序会更加体面!- pos软件基于三层架构 -09
续上篇) 大鸟说道:"实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的 ...
- Java开发三层架构
三层架构:将程序中所有的类按照功能类别划分为3个层次(将所有类用于3个不同包存放) 实体层:entity,该包下存放所有的实体类(数据类,只有属性(和数据库字段对应的属性)和属性的封装(setter/ ...
- 基于LINQ to SQL的WEB开发三层架构(1)
LINQ语言集成查询是微软用于抗衡竞争对手,改进现有开发模式下面向数据库操作问题的一个种全新体系架构.它的出现,解决了面向对象开发中由数据库操作引起的先天性的瓶颈,使得面向对象和数据库完美结合. 程序 ...
- WEB开发三层架构概述
SSH的三层结构 DAO 对数据库的操作的接口和实现 SERVICE 业务逻辑的实现,也可以使用dao提供的数据库操作的接口实现 ACTION 实现调用业务逻辑方法来处理用户的请求 三层结构 3-t ...
- 软件开发行业,年轻与大龄程序员的生存现状
作者 | Mark Seemann 译者 | Arvin,责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 软件产业热爱年轻人,但是年长 ...
- 谈谈跨界在软件开发中存在的意义
阅读目录 什么是跨界 熟悉的场景 思维惯性 结语 一.什么是跨界 跨界的本质:是整合.是融合.通过自身资源的某一特性与其它表面上不相干的资源进行随机的搭配应用.可放大相互资源的价值,甚至可以融合一个完 ...
- 软件开发行业,年轻与大龄程序员的生存现状究竟如何?
作者 | Mark Seemann 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 软件产业热爱年轻人,但是年长的人也有重要的意义. 我们的文化推崇年 ...
最新文章
- python实现pdf转word详解_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...
- 【锋利的Jquery】读书笔记五
- The Closest M Points BZOJ 3053
- 拼装机器人感想_学习制作机器人的感想作文500字15篇
- Google地图更新,更AI更贴心更节约时间,就是不敢来中国
- FTP+SSL(加密的ftp)
- tomcat7简单优化
- 2013年全国大学生电子设计竞赛C题-旋转倒立摆
- 我常用的几个软件的注册码
- MATLAB 读取图片像素处理
- 渗透火狐浏览器设置代理
- MySQL数据库——SQL函数
- 大计基笔记(1)数学运算
- java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
- WordPress BuddyPress 越权RCE漏洞复现(CVE-2021-21389)
- Android Studio Chipmunk 发布啦,快来看看有什么更新
- python统计英文文章中单词出现的次数并排序_Python实现的统计文章单词次数功能示例...
- 【现代货币银行学】信用和利率(上)
- Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
- 左手忙工作,右手忙版权,真让人脑壳疼
热门文章
- C语言高级编程:利用堆栈溢出修改函数返回地址
- 退休老人有30万资金,如何存款最安全?
- 你为什么会沉默,你们为什么又在后退呢?
- 推荐華麗の真実的小说《The★Sakuray》
- 单片机小白学步系列(二十一) IO口:基本的LED和按键操作
- More C++ Idioms
- caj文件浏览器_caj文件怎么转换成pdf文件?试试这样操作,3步成功转换
- c语言 多个线程对同一变量执行memcpy_手把手带你实现线程池
- GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)
- matlab程序中,如何解决矢量长度必须相同的问题