返回顶部
首页 > 资讯 > 数据库 >在javaee的三层结构中,为什么事物存在于业务层
  • 736
分享到

在javaee的三层结构中,为什么事物存在于业务层

2024-04-02 19:04:59 736人浏览 泡泡鱼
摘要

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

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

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

这里讲解两种方式
第一种通过形式参数的方式
在javaee的三层结构中,为什么事物存在于业务层
第二种通过ThreadLocal的方式
ThreadLocal的底层是个map,该map的key是固定的,当前线程。value可以让我们存入任意对象

在javaee的三层结构中,为什么事物存在于业务层

public class JdbcUtils {

    // 成员变量,创建了C3P0的连接池(连接池中已经存在连接了...)
    private static final ComboPooledDataSource DATASOURCE = new ComboPooledDataSource();

    // 把Connection绑定到当前的线程中
    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

    
    public static DataSource getDataSource(){
        return DATASOURCE;
    }

    
    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;
    }

    
    public static void beginTransaction() throws SQLException{
        // 调用getConnection()
        Connection conn = getConnection();
        conn.setAutoCommit(false);
    }

    
    public static void commitTransaction() throws SQLException{
        // 调用getConnection()
        Connection conn = getConnection();
        conn.commit();
    }

    
    public static void rollBackTransaction() throws SQLException{
        // 调用getConnection()
        Connection conn = getConnection();
        conn.rollback();
    }

    
    public static void closeConn() throws SQLException{
        // 调用getConnection()
        Connection conn = getConnection();
        conn.close();
        tl.remove();
    }

    
    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();
            }
        }
    }

    
    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();
            }
        }
    }

}
您可能感兴趣的文档:

--结束END--

本文标题: 在javaee的三层结构中,为什么事物存在于业务层

本文链接: https://www.lsjlt.com/news/49057.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在javaee的三层结构中,为什么事物存在于业务层
    我们都知道在javaee实际开发中,分为3层结构来开发,controller,service和dao 那么为什么事物要存在于业务层中,事物是通过connection对象操作的,使用原始jdbc链接数据库的链...
    99+
    2024-04-02
  • 怎么在springBoot中利用service实现层事务控制的操作
    怎么在springBoot中利用service实现层事务控制的操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springBoot使用事物比较简单,在Appl...
    99+
    2023-06-06
  • 为什么我的本地业务在搜索结果中难以找到
    本地业务在搜索结果中难以找到的主要原因可能包括:1、未进行本地SEO优化:例如,未使用Google My Business或缺乏本地关键词;2、网站内容质量不高:包括低质量的内容和不相关的信息;3、不良的用户体验:如网站加载速度慢、设计不友...
    99+
    2023-10-29
    搜索结果 业务
  • 为什么亚马逊在中国的电商业务失败了?
    市场竞争激烈:中国的电商市场竞争激烈,淘宝、京东、拼多多等电商平台都在不断扩大市场份额。而亚马逊在中国市场上的竞争力相对较弱,无法有效地与竞争对手竞争。 物流配送问题:亚马逊在中国的物流配送网络相对薄弱,无法满足中国消费者的购物需求。此外...
    99+
    2023-10-27
    亚马逊 中国 商业
  • C语言IO空间映射在存储空间中的结构是什么
    小编给大家分享一下C语言IO空间映射在存储空间中的结构是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!IO 空间映射在存储空...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作