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
JDBC事务--软件开发三层架构--ThreadLocal的更多相关文章
- 事务管理在三层架构中应用以及使用ThreadLocal再次重构
本篇将详细讲解如何正确地在实际开发中编写事务处理操作,以及在事务处理的过程中使用ThreadLocal的方法. 在前面两篇博客中已经详细地介绍和学习了DbUtils这个Apache的工具类,那么在本篇 ...
- 【转】WEB开发三层架构概述
关于 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合” ...
- 浅谈Java开发三层架构
三层架构,一般来说就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):简单来说,就是展现 ...
- 有了门面,程序会更加体面!- pos软件基于三层架构 -09
续上篇) 大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.” ...
- 软件开发架构、网络基础知识、osi七层模型
一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
- python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)
1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...
- 浅谈C++三层架构
浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...
- 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比
简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...
- MVC:开发模式&&三层架构:软件设计架构
MVC:开发模式 jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码 ...
随机推荐
- vijos:P1285佳佳的魔法药水
背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水……怎么样才能得到0号药水呢?你要知道佳佳的家境也不是很好,成本得 ...
- cocos2dx unzip、createDir
转自:http://www.cnblogs.com/xioapingguo/p/4037323.html static unsigned long _maxUnzipBufSize = 0x50000 ...
- 在python 3.6下用pip 安装第三方库,比如pip install requests,老是报错 Fatal error in launcher: Unable to create process using '"'
解决办法:我把python.exe 修改为了python3.exe ,为了兼容python2, 后来把python2从环境变量里删除,把python3.exe修改为了python.exe 就解决了,再 ...
- chromium浏览器开发系列第五篇:Debugging with WinDBG
Windbg 相信windows开发的人都知道,有些人用的溜儿溜儿的,有个crash,直接拿这个工具一分析,就定位出来了.非常好用.以前有个同事,做sdk开发 的,会各种命令.来北京后,还去过微软面试 ...
- web性能并发测试工具(转)
导读:随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生 ...
- 实现一个排序,要求时间效率O(n)
数据大小是在一个范围内的,可以使用常量大小的辅助空间.不得超过O(n); #include "stdafx.h" #include <iostream> #includ ...
- 《深入分析Java Web技术内幕》读后感(Session、cookie)
第10章 P263 理解Cookie 理解Session Session如何工作的
- day1 java基础回顾-Junit单元测试
Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件 ...
- go开发环境搭建及开发工具简介
go语言包的下载地址:https://www.golangtc.com/download 这里以window10的操作系统环境为例 go的开发工具下载地址:https://www.golangtc.c ...
- [Makefile] 递归编译的Makefile的实现
转自:http://www.linuxidc.com/Linux/2017-01/139702.htm 最近写了一个递归Makefile,目的是既可以实现子模块的单独编译,也可以不做任何修改就和整个程 ...