zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SpringMvc
    Spring-Aop
    Spring-IOC
    Spring模块划分
    队列
    稀疏数组
    数据结构
    Nginx配置实例
    Nginx常用命令
    视频断点播放:h5+jquery
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7137587.html
Copyright © 2011-2022 走看看