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向下递归调用

     

  • 相关阅读:
    Adapter的泛型
    Xamarin 页面跳转
    NIPS(Conference and Workshop on Neural Information Processing Systems)
    CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
    Layer Normalization
    Using Fast Weights to Attend to the Recent Past
    A Deep Compositional Framework for Human-like Language Acquisition in Virtual Environment
    Ubuntu之No module named cv2
    Photoshop脚本之eps转换成jpg
    Temporal Ensembling for Semi-Supervised Learning
  • 原文地址:https://www.cnblogs.com/yipihema/p/10190616.html
Copyright © 2011-2022 走看看