• ADADADADAD

    在javaee的三层结构中,为什么事物存在于业务层[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:12:24

    作者:文/会员上传

    简介:

    我们都知道在javaee实际开发中,分为3层结构来开发,controller,service和dao那么为什么事物要存在于业务层中,事物是通过connection对象操作的,使用原始jdbc链接数据库的链接也是c

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    我们都知道在javaee实际开发中,分为3层结构来开发,controller,service和dao

    那么为什么事物要存在于业务层中,事物是通过connection对象操作的,使用原始jdbc链接数据库的链接也是connection操作的,connection是在到是怎么传递到dao的呢?

    这里讲解两种方式
    第一种通过形式参数的方式

    第二种通过ThreadLocal的方式
    ThreadLocal的底层是个map,该map的key是固定的,当前线程。value可以让我们存入任意对象

    public class JdbcUtils {// 成员变量,创建了C3P0的连接池(连接池中已经存在连接了...)private static final ComboPooledDataSource DATASOURCE = new ComboPooledDataSource();// 把Connection绑定到当前的线程中private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();/** * 返回的是C3P0的连接池 * @return */public static DataSource getDataSource(){return DATASOURCE;}/** * 获取连接,返回连接 * @return * @throws SQLException*/public static Connection getConnection() throws SQLException{Connection conn = null;// 从tl中获取conn = tl.get();if(conn == null){// 从连接池中获取连接conn = DATASOURCE.getConnection();// 非常关键,把连接存入到tl中tl.set(conn);}return conn;}/** * 开启事务 * @throws SQLException*/public static void beginTransaction() throws SQLException{// 调用getConnection()Connection conn = getConnection();conn.setAutoCommit(false);}/** * 提交事务 * @throws SQLException*/public static void commitTransaction() throws SQLException{// 调用getConnection()Connection conn = getConnection();conn.commit();}/** * 回滚事务 * @throws SQLException*/public static void rollBackTransaction() throws SQLException{// 调用getConnection()Connection conn = getConnection();conn.rollback();}/** * 归还连接 * @throws SQLException*/public static void closeConn() throws SQLException{// 调用getConnection()Connection conn = getConnection();conn.close();tl.remove();}/** * 释放资源 * @param stmt * @param conn */public static void release(Statement stmt,Connection conn){if(stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {// 已经变成了归还了...conn.close();} catch (SQLException e) {e.printStackTrace();}}}/** * 释放资源 * @param stmt * @param conn */public static void release(ResultSet rs,Statement stmt,Connection conn){if(rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {// 把close()给修改了,原来是销毁连接,现在让方法变成归还连接。conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
    在javaee的三层结构中,为什么事物存在于业务层.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: JDBC事物书写ava