当前位置: 首页 > news >正文

做美食下载什么网站字体 wordpress

做美食下载什么网站,字体 wordpress,施工企业合规风险识别与管理,赣州网站建设公司java pojo使用大多数嵌套事务是使用EJB实现的#xff0c;现在我们尝试在POJO上实现嵌套事务。 在这里#xff0c;我们使用了ThreadLocal的功能。 了解嵌套事务 事务可以嵌套在另一个内部。 因此#xff0c;内部事务或外部事务可以回滚或提交#xff0c;而不会影响其他事务… java pojo使用 大多数嵌套事务是使用EJB实现的现在我们尝试在POJO上实现嵌套事务。 在这里我们使用了ThreadLocal的功能。 了解嵌套事务 事务可以嵌套在另一个内部。 因此内部事务或外部事务可以回滚或提交而不会影响其他事务。 创建新事务后它将进入外部事务。 一旦内部事务以提交或回滚的方式完成外部事务就可以执行提交或回滚而与内部事务无关。 首先关闭最内部的事务然后继续进行外部事务。 使用简单POJO实施 创建界面如下 importjava.sql.Connection;publicinterfaceTransactionManager {Connection getConnection();voidbeginTransaction();void commit();void rollback(); } 创建事务管理器类如下所示 importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.util.Stack;publicclassTransactionManagerStackImplimplementsTransactionManager {private StackConnectionconnections new StackConnection();Overridepublic Connection getConnection() {if (connections.isEmpty()) {this.addConn();}returnconnections.peek();}OverridepublicvoidbeginTransaction() {this.addConn();}Overridepublicvoid commit() {try {if (connections.peek() ! null !connections.peek().isClosed()) {System.out.println(connections.peek().toString() --Commit---);connections.peek().commit();connections.pop().close();}} catch (SQLException e) {e.printStackTrace();}}Overridepublicvoid rollback() {try {if (connections.peek() ! null !connections.peek().isClosed()) {System.out.println(connections.peek().toString() --Rollback---);connections.peek().rollback();connections.pop().close();}} catch (SQLException e) {e.printStackTrace();}}privatevoidaddConn() {try {Connection con this.getMysqlConnection();con.setAutoCommit(false);connections.push(con);System.out.println(con.toString() --Conection---);} catch (SQLException e) {e.printStackTrace();}}private Connection getMysqlConnection() {returngetConnection(com.mysql.jdbc.Driver, jdbc:mysql://localhost:3306/testdb, test, test12345);}private Connection getConnection(String driver, String connection,String user, String password) {try {Class.forName(driver);returnDriverManager.getConnection(connection, user, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}returnnull;} } 在这里我们创建了一个堆栈 private StackConnection connections new StackConnection(); 由于事务创建为LIFO堆栈因此我们使用了Java API中的Stack来维护每个事务的连接 public void beginTransaction() 开始事务以开始新事务并将连接添加到堆栈。 AutoCommit已设置为false public Connection getConnection() 获取当前事务的连接。 如果不存在它将创建并添加到堆栈中 public void commit() 提交当前事务并关闭连接该连接也已从堆栈中删除 public void rollback() 回滚当前事务并关闭连接该连接也已从堆栈中删除。 上面的TransactionManagerStackImpl类将为单线程创建嵌套事务。 多线程嵌套事务 对于多线程应用程序每个线程都有独立的事务和嵌套事务。 我们提出使用ThreadLocal来管理连接堆栈。 importjava.sql.Connection;publicclassTransactionManagerThreadLocalimplementsTransactionManager {privatestaticfinalThreadLocalTransactionManagertranManager newThreadLocalTransactionManager() {protectedTransactionManagerinitialValue() {System.out.println(this.toString() --Thread Local Initialize--);returnnewTransactionManagerStackImpl();}};OverridepublicvoidbeginTransaction() {tranManager.get().beginTransaction();}Overridepublicvoid commit() {tranManager.get().commit();}Overridepublicvoid rollback() {tranManager.get().rollback();}Overridepublic Connection getConnection() {returntranManager.get().getConnection();} } 在这里我们初始化TransactionManagerStackImpl以在线程内部创建嵌套事务。 测试中 为了进行上述测试请提交内部事务并回滚外部事务。 importjava.sql.Connection;publicclassNestedMainimplements Runnable {privateintv 0;private String name;NestedMain(int v, String name) {this.v v;this.name name;}publicstaticvoid main(String[] args) throws Exception{for (inti 0; i 3; i) {NestedMain main newNestedMain(i * 10, Ravi i);new Thread(main).start();}}Overridepublicvoid run() {try {TransactionManagerThreadLocal local newTransactionManagerThreadLocal();// Transaction 1 ( outer )local.beginTransaction();Connection con local.getConnection();String sql INSERT INTO test_tran (emp_id, name) VALUES (1v, namev);this.insert(con, sql);// Transaction 2 ( Inner )local.beginTransaction();con local.getConnection();sql INSERT INTO test_tran (emp_id, name) VALUES (2v, namev);this.insert(con, sql);local.commit(); // Committing 2local.rollback(); // Rollback 1 Outer} catch (Exception e) {e.printStackTrace();}结果 com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.mysql.jdbc.JDBC4Connection10dd1f7--Conection--- com.mysql.jdbc.JDBC4Connection1813fac--Conection--- com.mysql.jdbc.JDBC4Connection136228--Conection--- com.mysql.jdbc.JDBC4Connection1855af5--Conection--- com.mysql.jdbc.JDBC4Connectione39a3e--Conection--- com.mysql.jdbc.JDBC4Connection1855af5--Commit--- com.mysql.jdbc.JDBC4Connectione39a3e--Commit--- com.mysql.jdbc.JDBC4Connection9fbe93--Conection--- com.mysql.jdbc.JDBC4Connection9fbe93--Commit--- com.mysql.jdbc.JDBC4Connection10dd1f7--Rollback--- com.mysql.jdbc.JDBC4Connection1813fac--Rollback--- com.mysql.jdbc.JDBC4Connection136228--Rollback--- 名称 emp_id 拉维220 220 拉维00 20 拉维110 210 回滚内部事务并提交外部事务时 com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.ttit.TransactionManagerThreadLocal$11270b73--Thread Local Initialize-- com.mysql.jdbc.JDBC4Connection9f2a0b--Conection--- com.mysql.jdbc.JDBC4Connection136228--Conection--- com.mysql.jdbc.JDBC4Connection1c672d0--Conection--- com.mysql.jdbc.JDBC4Connection9fbe93--Conection--- com.mysql.jdbc.JDBC4Connection1858610--Conection--- com.mysql.jdbc.JDBC4Connection9fbe93--Rollback--- com.mysql.jdbc.JDBC4Connection1858610--Rollback--- com.mysql.jdbc.JDBC4Connection1a5ab41--Conection--- com.mysql.jdbc.JDBC4Connection1a5ab41--Rollback--- com.mysql.jdbc.JDBC4Connection9f2a0b--Commit--- com.mysql.jdbc.JDBC4Connection136228--Commit--- com.mysql.jdbc.JDBC4Connection1c672d0--Commit--- 名称 emp_id 拉维00 10 拉维220 120 拉维110 110 资源 了解ThreadLocal背后的概念 翻译自: https://www.javacodegeeks.com/2013/12/java-nested-transaction-using-threadlocal-in-pojo.htmljava pojo使用
http://www.yutouwan.com/news/51293/

相关文章:

  • 双公示网站专栏建设情况上海企业网络维护
  • 建设企业网站官网u盾wordpress 安卓 生成
  • 如何建立一个论坛网站国外做油画的网站
  • 个人网站可以收费吗石家庄建设项目公示网
  • 高端网站价格上海互联网企业100强
  • 阿里云网站备案拍照点广告流量投放
  • 自己做网站需要什么软件下载重庆知名网站制作公司
  • 怎么用思维导图做网站结构图四川成都设计公司
  • 兰州网站推广排名鲜花网站前台数据库建设
  • 做电影网站模板教学炉石做任务抽奖网站
  • 怎么开通网站平台手工制作折纸
  • 站内推广的方法和工具高端网站制作费用
  • 如何自建一个便宜的网站长沙网站推广排名优化
  • 公司 网站 方案龙岗网站建设找深一
  • 安徽建设工程造价信息网站阿里云企业邮箱入口
  • 成都网站建设推广详情网站开发语言在那看出来
  • 官网网站建设需求文档首页重庆网站建设
  • 做的网站怎么转成网址链接高端画册设计
  • wordpress上传视频慢优化大师专业版
  • 手机网站建设比较好的公司网页设置背景图片
  • 制作公司网站步骤有什么网站可以做推广
  • 千华网鞍山门户网站中国的51区在哪里
  • 广州力洋建设工程有限公司做seo要明白网站内容乃重中之重
  • 有域名就可以做网站么公司网页设计推广服务公司
  • 东莞市建设安监监督网站首页电商资源网站
  • 特殊符号网名生成器网站关键词搜索优化是怎么做的
  • 农村电商网站建设网站建设前期需要准备什么资料
  • 淘宝客建站模板哈尔滨网络公司代理商
  • 做网站软文怎么弄安阳网站建设优化渠道
  • 聊城手机网站建设电话app开发公司哪好?