资源简介

通过转账案例讲解了三层和事务,以及容易出现问题的关键点

资源截图

代码片段和文件信息

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.xml
     目录           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.xml
     目录           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个文件信息

评论

共有 条评论