-
大小: 1.11MB文件类型: .zip金币: 2下载: 0 次发布日期: 2024-02-04
- 语言: Java
- 标签: 三层 事务 单例模式 ThreadLocal
资源简介
通过转账案例讲解了三层和事务,以及容易出现问题的关键点
代码片段和文件信息
package com.beans;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils {
// 单例模式(饿汉式单例)
private static ComboPooledDataSource ds = new ComboPooledDataSource();
// 获取连接池方法
public static DataSource getDataSource() {
return ds;
}
//创建ThreadLocal对象,其本质就是Map只是底层封装好了,直接调用其set和get即可
private static ThreadLocal local = new ThreadLocal();
private static Connection conn;
public static Connection getConnection() {
conn = local.get();
if (conn == null) {
try {
conn = ds.getConnection();
local.set(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return conn;
}
// //声明一个map用来线程id和连接
// private static Map map = new HashMap();
// private static Connection conn;
//
// public static Connection getConnection() {
// //根据当前线程id号获取连接
// conn = map.get(Thread.currentThread().getId());
//
// if (conn == null) {
// try {
// //如果当前id获取的连接不存在,则从连接池中获取一个连接
// conn = ds.getConnection();
// //并且将获取的线程id和连接存放到map中
// map.put(Thread.currentThread().getId() conn);
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// //如果根据线程id找到了连接,直接返回
// return conn;
// }
//这里一定要声明静态变量,因为静态方法下只能调用静态变量
//声明一个map用来存储连接
// private static Map map = new HashMap();
// // 先声明一个连接对象conn;
// private static Connection conn;
//
// public static Connection getConnection() {
// //第一次从map中获取的连接肯定为null
// conn = map.get(1L);
//
// if (conn == null) {
// try {
// //第一次获取连接会执行此步骤
// conn = ds.getConnection();
// //将获取的连接存入到map中
// map.put(1L conn);
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// //如果第二次调用此连接,则会返回map中的连接
// return conn;
// }
// // 1. 单例模式(懒汉式单例)
// //先声明一个连接对象conn;
// private static Connection conn;
// public static Connection getConnection() {
// //判断连接对象conn是否为空
// if (conn == null) {
// try {
// //如果第一次调用此方法,则会执行此步骤获取连接
// conn = ds.getConnection();
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// //如果是第二次调用获取连接方法,会直接返回第一次的连接
// //这样就确保service层和dao层的连接为同一个连接
// return conn;
// }
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-10 20:46 jdbc-transaction\
文件 723 2018-05-10 17:29 jdbc-transaction\.classpath
文件 392 2018-05-10 19:18 jdbc-transaction\.project
目录 0 2018-05-10 20:46 jdbc-transaction\.settings\
文件 598 2018-05-05 17:04 jdbc-transaction\.settings\org.eclipse.jdt.core.prefs
目录 0 2018-05-10 20:46 jdbc-transaction\bin\
文件 1059 2018-05-10 11:54 jdbc-transaction\bin\c3p0-config.xm
目录 0 2018-05-10 20:46 jdbc-transaction\bin\com\
目录 0 2018-05-10 20:46 jdbc-transaction\bin\com\beans\
文件 1180 2018-05-10 20:36 jdbc-transaction\bin\com\beans\JdbcUtils.class
目录 0 2018-05-10 20:46 jdbc-transaction\bin\com\dao\
文件 1509 2018-05-10 19:49 jdbc-transaction\bin\com\dao\AccountDao.class
目录 0 2018-05-10 20:46 jdbc-transaction\bin\com\service\
文件 1230 2018-05-10 19:41 jdbc-transaction\bin\com\service\AccountService.class
目录 0 2018-05-10 20:46 jdbc-transaction\bin\com\transfer\
文件 999 2018-05-10 19:18 jdbc-transaction\bin\com\transfer\AccountWeb.class
目录 0 2018-05-10 20:46 jdbc-transaction\lib\
文件 610790 2018-05-04 20:44 jdbc-transaction\lib\c3p0-0.9.1.2.jar
文件 77857 2018-05-05 18:21 jdbc-transaction\lib\commons-dbutils-1.6.jar
文件 540852 2018-05-04 20:04 jdbc-transaction\lib\mysql-connector-java-5.0.8-bin.jar
目录 0 2018-05-10 20:46 jdbc-transaction\src\
文件 1059 2018-05-10 11:54 jdbc-transaction\src\c3p0-config.xm
目录 0 2018-05-10 20:46 jdbc-transaction\src\com\
目录 0 2018-05-10 20:46 jdbc-transaction\src\com\beans\
文件 2900 2018-05-10 20:36 jdbc-transaction\src\com\beans\JdbcUtils.java
目录 0 2018-05-10 20:46 jdbc-transaction\src\com\dao\
文件 1378 2018-05-10 19:49 jdbc-transaction\src\com\dao\AccountDao.java
目录 0 2018-05-10 20:46 jdbc-transaction\src\com\service\
文件 1212 2018-05-10 19:41 jdbc-transaction\src\com\service\AccountService.java
目录 0 2018-05-10 20:46 jdbc-transaction\src\com\transfer\
文件 543 2018-05-10 17:41 jdbc-transaction\src\com\transfer\AccountWeb.java
............此处省略0个文件信息
- 上一篇:蚂蚁森林自动能量.apk
- 下一篇:基于SQLite数据库的课程表
相关资源
- 无框架增删改查+登陆+分页+事务处理
- 课工场新闻管理系统.rar
- Java电影购票
- 图书进存销系统 java GUI 界面 mysql 数据
- Spring JDBC与事务管理
- 基于JSP的企业日常事务管理系统
- SimpleCodeGenerator简单MVC三层代码生成器
- JAVA swing三层架构的超市收银系统
- 基于JSP的企业日常事务管理系统 毕业
- Java+Web项目企业事务管理系统源码
- Java+Web项目企业事务管理系统源码 (
- java版电影销售系统有后台包含三层架
- 企业日常事务管理系统JAVA+SQL2000
- 网上鞋城三层开发JAVA
- SqlServer+jsp+mvc三层架构实现的易买网购
- javaweb项目+设计模式单例模式,工厂模
- 深入浅出java设计模式高清中文PDF
- JavaEE的Spring JDBC与事务管理 实验
- 基于java SSH框架的网络相册源码+论文
- 基于java+三层mvc的仿微博系统
- 新闻发布系统 j2ee 采用ssh三层框架
- 数据库的事务 - android入门视频35
- 基于java在线点餐系统+源码+数据库语
- Java常用的3中设计模式代码即工厂模式
- java+Swing+学生事务管理系统
- java单例模式连接数据库源码
- transaction-springcloud-4.1.2.jar
- java 山寨qq 聊天工具基于mvc三层架构,
- 设计模式单例模式和工厂模式综合应
- 个人日常事务管理系统java版
评论
共有 条评论