大数据WEB阶段(十九)Threadlocal
生活随笔
收集整理的這篇文章主要介紹了
大数据WEB阶段(十九)Threadlocal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ThreadLocal
一、ThreadLocal概述
二、ThreadLocal方法
三、基于數據庫事務、ThreadLocal的實際案例
代碼:
事務管理工具public class TransManage {private TransManage(){}private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();//獲取連接public static Connection getConn(){return tl.get();}//釋放資源public static void releaase(){Connection conn = tl.get();MySqlUtils.close(null, null, conn);tl.remove();}//開啟事務public static void startTrans(){try {Connection conn = MySqlUtils.getConn();conn.setAutoCommit(false);tl.set(conn);} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}//提交事務public static void commitTrans(){try {tl.get().commit();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//回滾事務public static void rollbackTrans(){try {tl.get().rollback();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}service層執行一組事務private ProdDao dao =BaseFactory.getBase().getInstance(ProdDao.class);public void addProd(Prod prod) {try{//開啟事務TransManage.startTrans();//1.根據商品種類查詢Prod_category category = dao.findPordCategoryByName(prod.getCategory().getCategory());//2. 處理商品種類 int c_id = 0;if(category == null){//商品種類不存在, 添加商品種類Prod_category pc = new Prod_category();pc.setCategory(prod.getCategory().getCategory());dao.addprodcategory(pc);//并獲得商品種類的編號保存在商品信息中Prod_category findpc = dao.findPordCategoryByName(prod.getCategory().getCategory());c_id = findpc.getId();}else{//如果找到 , 就查詢商品種類的編號保存在商品信息中c_id = category.getId();}//3. 將商品存入數據庫中prod.getCategory().setId(c_id);dao.addprod(prod);//沒有發生異常 , 則提交事務TransManage.commitTrans();}catch(Exception e){//如果發生異常 , 則回滾TransManage.rollbackTrans();throw new RuntimeException(e);}finally{//釋放資源TransManage.releaase();}}總結
以上是生活随笔為你收集整理的大数据WEB阶段(十九)Threadlocal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据WEB阶段(十八)数据库事务
- 下一篇: 大数据WEB阶段(二十)更新丢失