zoukankan      html  css  js  c++  java
  • 数据库几个中间件的关系及大致原理

    mysql架构示意图:

    最原始的JDBC实现(mysql-connctor-java): 加载JDBC驱动程序 → 建立数据库连接Connection → 创建执行SQL的语句Statement(preparedStatement) → 处理执行结果ResultSet → 释放资源

     

    DataSource->Connection->Statement

     

    DataSource的核心方法:

    public interface DataSource extends CommonDataSource,Wrapper {

      Connection getConnection() throws SQLException;

      Connection getConnection(String username, String password)
      throws SQLException;
    }

    Connection核心api:

    public interface Connection extends Wrapper, AutoCloseable {

      Statement createStatement() throws SQLException;

      PreparedStatement prepareStatement(String sql) throws SQLException;

      CallableStatement prepareCall(String sql) throws SQLException;

      void setAutoCommit(boolean autoCommit) throws SQLException;

      boolean getAutoCommit() throws SQLException;

      void commit() throws SQLException;

      void rollback() throws SQLException;

      void close() throws SQLException;

      boolean isClosed() throws SQLException;
    }

    Statement核心API定义,执行静态的sql:

    public interface Statement extends Wrapper, AutoCloseable {

      ResultSet executeQuery(String sql) throws SQLException;

      int executeUpdate(String sql) throws SQLException;

      void close() throws SQLException;

      boolean execute(String sql, String columnNames[]) throws SQLException;

      boolean isClosed() throws SQLException;

      public boolean isCloseOnCompletion() throws SQLException;

    }


    ibatis的核心应该是重写statement

    sharding-jdbc核心应该也是对statement

    druid核心应该是Connection

    各个中间件通过Statement的execute向下递归调用

     

  • 相关阅读:
    Asp.net上传文件,过滤不符合要求格式的文件
    取得文件真正扩展名类型
    ORA12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
    Android显示图片自适应(控件+网页)
    Android代码资源的国际化
    Eclipse下加载Android SDK源码
    Android 中Webview 自适应屏幕
    网页图片缩放(js)
    android webview 缩放及换行
    subclipse用法
  • 原文地址:https://www.cnblogs.com/yipihema/p/10190616.html
Copyright © 2011-2022 走看看