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的更多相关文章

  1. 事务管理在三层架构中应用以及使用ThreadLocal再次重构

    本篇将详细讲解如何正确地在实际开发中编写事务处理操作,以及在事务处理的过程中使用ThreadLocal的方法. 在前面两篇博客中已经详细地介绍和学习了DbUtils这个Apache的工具类,那么在本篇 ...

  2. 【转】WEB开发三层架构概述

    关于 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合” ...

  3. 浅谈Java开发三层架构

    三层架构,一般来说就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):简单来说,就是展现 ...

  4. 有了门面,程序会更加体面!- pos软件基于三层架构 -09

    续上篇)        大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.”   ...

  5. 软件开发架构、网络基础知识、osi七层模型

    一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...

  6. python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)

    1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...

  7. 浅谈C++三层架构

    浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...

  8. 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比

    简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...

  9. MVC:开发模式&&三层架构:软件设计架构

    MVC:开发模式 jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码 ...

随机推荐

  1. bootstrap 全局样式

    reset.css html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100% ...

  2. strlen("汉字")的值是多少

    转自:http://blog.csdn.net/gogor/article/details/4470775 strlen("汉字")的值是多少? 这个问题的答案与系统所采用的字符编 ...

  3. 怎么将vim的剪切版设置成系统的剪切版

    如果你用vim敲完了代码,怎么把代码提交到ACMoj的粘贴版上呢. 这是个问题. 去网上查了一下,首先有人说可以在vimrc里面添加 set clipboard=unnamed 我试了一下,没有效果. ...

  4. iOS内购流程一(协议、税务和银行业务)

    协议.税务和银行业务,这一选项是当你App使用了In-app purchaes时候,你跟苹果签订协议的,需要签订合同和填写你的银行收款等信息 一.填写法人信息 1.登录iTunes Store,点击协 ...

  5. 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)

                                                    第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...

  6. 使用ASP.NET Core实现Docker的HealthCheck指令

     写在前面 HealthCheck 不仅是对应用程序内运行情况.数据流通情况进行检查, 还包括应用程序对外部服务或依赖资源的健康检查. 健康检查通常是以暴露应用程序的HTTP端点的形式 实施,可用于配 ...

  7. 关于define

    <?php define('local','localhost');//echo constant('local');exit(); define('username','root'); def ...

  8. windows和Dos常见命令总结

    linux最常见命令 (1) pwd命令pwd (即print working directory,打印工作路径) 命令的功能是显示当前的工作路径.如现在是在“/home/CAI”目录下,则可以用此命 ...

  9. ZOJ2898【折半搜索】

    题意: 给出一系列值和对应的陷阱,对于陷阱如果存在两个就抵消,求价值最大. 思路: 折半枚举,利用异或 #include <bits/stdc++.h> using namespace s ...

  10. uva1626 Brackets sequence

    题目大意: 给一个有小括号和中括号组成的序列,满足题中的三个条件时,是合法的.不满足时是不合法的,问将一个不合法的序列最少添加几个括号可以使之变成合法的.输出最短合法序列. /* 比较坑的一道题,wa ...