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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINUX多播编程

一.单播&#xff0c;广播和多播 1.单播用于两个主机之间的端对端通信&#xff0c;广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端&#xff0c;要么对一个主机进行通信&#xff0c;要么对整个局域网上的主机进行通信。实际情况下&#xff0c;经常需…

cas单点登录搭建

Cas Server下载&#xff1a;http://developer.jasig.org/cas/ Cas Client下载&#xff1a;http://developer.jasig.org/cas-clients/ 测试环境&#xff1a; jdk&#xff1a;java version "1.8.0_60" tomcat&#xff1a;apache-tomcat-7.0.65 mysql&#xff1a;mysql5…

新CIO:Mark Schwartz认为的领先IT

美国公民及移民服务局前任CIO&#xff0c;现任AWS企业战略师Mark Schwartz在伦敦举行的DevOps企业峰会上介绍了什么是领先的IT。\\Schwartz介绍说&#xff0c;老旧、传统的模型将业务和IT完全分开&#xff0c;他又提出了一种新的模型&#xff0c;在这种模型中&#xff0c;CIO担…

689D Magic Odd Square 奇数幻方

1 奇数阶幻方构造法 (1) 将1放在第一行中间一列; (2) 从2开始直到nn止各数依次按下列规则存放&#xff1a;按 45方向行走&#xff0c;向右上&#xff0c;即每一个数存放的行比前一个数的行数减1&#xff0c;列数加1 (3) 如果行列范围超出矩阵范围&#xff0c;则回绕。例如1在第…

Java单例的常见形式

2019独角兽企业重金招聘Python工程师标准>>> Java单例的常见形式 本文目的&#xff1a;总结Java中的单例模式 本文定位&#xff1a;学习笔记 学习过程记录&#xff0c;加深理解&#xff0c;便于回顾。也希望能给学习的同学一些灵感 一、非延迟加载单例类 public cla…

运动控制卡的基类函数与实现例子

基类 namespace MotionCardDll {public abstract class IMotionCard{public Int32 m_Mode;public Int32 m_BoardId;//Card 号public Int32 m_Card_name;public Int32 m_StartAxisID

U-Boot启动过程完全分析

1.1 U-Boot 工作过程 U-Boot启动内核的过程可以分为两个阶段&#xff0c;两个阶段的功能如下&#xff1a; &#xff08;1&#xff09;第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 &#xff08;2&#x…

CJOJ 2171 火车站开饭店(树型动态规划)

CJOJ 2171 火车站开饭店&#xff08;树型动态规划&#xff09; Description 政府邀请了你在火车站开饭店&#xff0c;但不允许同时在两个相连的火车站开。任意两个火车站有且只有一条路径&#xff0c;每个火车站最多有 50 个和它相连接的火车站。 告诉你每个火车站的利润&#…

JavaWeb总结(十五)

AJAX&#xff08;Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;&#xff09; AJAX的作用是什么&#xff1f; 在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术 是一种用于创建快速动态网页的技术 通过在后台与服务器进行…

工业相机基类与实现

基类 namespace Cameron {//相机参数public struct CamPara{public int DeviceID; //设备描述public string Name;public int WorkMode; //工作类型,0为连续模式,1为触发模式public float Expours

物联网技术周报第 143 期: Unity 3D 和 Arduino 打造虚拟现实飞行器

新闻 \\\\t《西门子、阿里云签约助力中国工业物联网发展》德国工业集团西门子和中国阿里巴巴集团旗下的云计算公司阿里云&#xff19;日在柏林签署备忘录&#xff0c;共同推进中国工业物联网发展。根据备忘录内容&#xff0c;西门子和阿里云将发挥各自技术和行业优势&#xff…

不同平台下 sleep区别用法

应用程序&#xff1a; #include <syswait.h> usleep(n) //n微秒 Sleep&#xff08;n&#xff09;//n毫秒 sleep&#xff08;n&#xff09;//n秒 驱动程序&#xff1a; #include <linux/delay.h> mdelay(n) //微秒milliseconds 其实现 #ifdef notdef #define mdelay…

各视频、各音频之间格式任意玩弄(图文详解)

写在前面说的话 在这里&#xff0c;记录下来&#xff0c;是为了方便以后偶尔所制作所需和你们前来的浏览学习。 学会&#xff0c;玩弄一些视频和音频的软件&#xff0c;只有好处没有害处。同时&#xff0c;也不需很多时间&#xff0c;练练手罢了。也是方便自己所用吧&#xff0…

oracle 如何查看日志?

2019独角兽企业重金招聘Python工程师标准>>> Oracle日志查看一&#xff0e;Oracle日志的路径&#xff1a;登录&#xff1a;sqlplus "/as sysdba"查看路径&#xff1a;SQL> select * from v$logfile;SQL> select * from v$logfile;(#日志文件路径)二…

回归_英国酒精和香烟关系

sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare 数据统计分析联系:&#xff31;&#xff31;&#xff1a;&a…

C# ini文件读写函数

namespace Tools {class IniOperate{[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key,

Visual studio内存泄露检查工具--BoundsChecker

BoundsChecker是一个Run-Time错误检测工具&#xff0c;它主要定位程序在运行时期发生的各种错误。 BoundsChecker能检测的错误包括&#xff1a; 1&#xff09;指针操作和内存、资源泄露错误&#xff0c;比如&#xff1a;内存泄露&#xff1b;资源泄露&#xff…

【转】如何用Maven创建web项目(具体步骤)

使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project &#xff08;不使用骨架&#xff09; 这里的Packing 选择 war的形式 由于packing是war包&#xff0c;那么下面也就多出了webapp的目录 由于我们的项目要使用eclipse发…

CST光源控制卡简单操作C#程序

namespace Machine {class LightCST{private SerialPort serialPort ;public LightCST(){serialPort = new SerialPort();}

可能是目前最详细的Redis内存模型及应用解读

Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff1a;字符串、哈希、列表、集合、有序集合。丰富…