JDBC(Javaデータベース接続)研究ノートの初日

JDBCの概要

データの永続
永続性:後で使用できるように、データをパワーダウンしたストレージデバイスに保存します。ほとんどの場合、特にエンタープライズレベルのアプリケーションの場合、データの永続性とは、メモリ内のデータをハードディスクに保存して「統合」することを意味し、永続性の実現プロセスは、ほとんどの場合、さまざまなリレーショナルデータベースを介して行われます。
永続性の主な用途は、リレーショナルデータベースのメモリにデータを格納することです。もちろん、ディスクファイルやXMLデータファイルに格納することもできます。

Javaのデータストレージテクノロジー

Javaでは、データベースアクセステクノロジは次のカテゴリに分類
できます
。JDBCはデータベースに直接アクセスしますJDO(Java Data Object)テクノロジ
Hibernate、MybatisなどのサードパーティのO / Rツール。JDBC
はデータベース、JDO、Hibernate、MyBatisなどは、JDBCをより適切にカプセル化します。

JDBCの概要

JDBC(Java Database Connectivity)は、特定のデータベース管理システムおよび一般的なSQLデータベースへのアクセスと操作から独立しパブリックインターフェイス(APIのセット)です。データベースへのアクセスに使用される標準のJavaクラスライブラリ(java.sql)を定義します。 、javax)。.sql)これらのライブラリを使用して、標準的な方法でデータベースリソースに簡単にアクセスします。
JDBCは、さまざまなデータベースにアクセスするための統一された方法を提供し、開発者にとっていくつかの詳細な問題を保護します。
JDBCの目標は、JavaプログラマーがJDBCを使用してJDBCドライバーを提供するデータベースシステムに接続できるようにすることです。これにより、プログラマーは特定のデータベースシステムの特性をあまり理解する必要がなくなり、大幅に簡素化および高速化されます。開発プロセス。
JDBCがない場合、Javaプログラムは次のようにデータベースにアクセスします
ここに画像の説明を挿入
。JDBCを使用すると、Javaプログラムは
ここに画像の説明を挿入
次のようにデータベースにアクセスします
ここに画像の説明を挿入

JDBCアーキテクチャ

JDBCインターフェース(API)には、次の2つのレベルがあります。
アプリケーション指向API: Java API、アプリケーション開発者が使用する抽象インターフェース(データベースへの接続、SQLステートメントの実行、および結果の取得)。
データベース指向API:開発者がデータベースドライバーを開発するためのJavaドライバーAPI。
JDBCは、データベース操作のためにsun companyによって提供されるインターフェースのセットです。Javaプログラマーは、このインターフェースのセットに対してのみプログラミングする必要があります。
さまざまなデータベースベンダーが、この一連のインターフェイスにさまざまな実装を提供する必要があります。さまざまな実装のコレクションは、さまざまなデータベースの推進力です。
————インターフェース指向プログラミング

JDBCプログラミング手順

ここに画像の説明を挿入

データベース接続を取得する

要素1:ドライバーインターフェイス実装クラス

ドライバーインターフェイスの
概要java.sql.Driverインターフェイスは、すべてのJDBCドライバーが実装する必要のあるインターフェイスです。このインターフェイスはデータベースベンダーに提供され、データベース
ベンダーが異なれば実装も異なります。
プログラムでは、ドライバーインターフェイスを実装するクラスに直接アクセスする必要はありません。代わりに、ドライバーマネージャークラス(java.sql.DriverManager)が
これらのドライバー実装を呼び出します
Oracleドライバー:oracle.jdbc.driver.OracleDriver
mySqlドライバー:com.mysql.jdbc.Driver
関連するjarパッケージをJavaプロジェクトのディレクトリーにコピーします。通常、新しいlibフォルダーを作成します。
ここに画像の説明を挿入
注:動的Webプロジェクト(動的Webプロジェクト)の場合は、ドライバーjarをWebContentのWEB-INFディレクトリのlibディレクトリ(一部の開発ツールはWebRootと呼ばれます)に配置して
ここに画像の説明を挿入
、JDBCドライバーを
ロードおよび登録します。ドライバーのロード:JDBCドライバーをロードするには、Classクラスの静的メソッドforName()を呼び出し、ロードするJDBCドライバーのクラス名を渡す必要がありますClass.forName( "com.mysql.jdbc.Driver");
ドライバーの登録:DriverManagerクラスは、ドライバーの管理を担当するドライバープログラムマネージャークラスです
。DriverManager.registerDriver(com.mysql.jdbc.Driver)を使用して、ドライバーを登録します。
Driverインターフェイスのドライバークラスには静的コードブロックが含まれているため、通常、ドライバークラスのインスタンスを登録するためにDriverManagerクラスのregisterDriver()メソッドを明示的に呼び出す必要はありません。この静的コードブロックでは、DriverManager.registerDriver ()メソッドは、それ自体のインスタンスを登録するために呼び出されます。DirverManagerの
詳細次の図は、MySQLのDriver実装クラスのソースコードです。

ここに画像の説明を挿入

要素二:URL

JDBC URLは、登録されたドライバーを識別するために使用されます。ドライバーマネージャーは、このURLを使用して、
データベースへの接続を確立するための正しいドライバーを選択します。
JDBC URL標準は、3つの部分で構成され、各部分はコロンで区切られています。
jdbc:サブプロトコル:サブ名
プロトコル:JDBC URLのプロトコルは常にjdbc
サブプロトコル:サブプロトコルはデータベースドライバーを識別するために使用されます。
サブ名:データベースを識別する方法。サブ名は、サブプロトコルごとに異なる場合があります。サブ名を使用する目的は、データベースを見つけて
十分な情報提供することです。ホスト名(サーバーのIPアドレスに対応)、ポート番号、およびデータベース名が含まれます。
例:

ここに画像の説明を挿入

要素3:ユーザー名とパスワード

ユーザー、パスワードを使用して、「属性名=属性値」でデータベースに通知
できます。DriverManagerクラスのgetConnection()メソッドを呼び出して、データベースへの接続を確立できます。

データベース接続の例(mysqlのバージョンは8.0.20です)

接続方法1

    @Test
    public void testConnection1() throws SQLException {
    
    
        Driver driver=new com.mysql.jdbc.Driver();
        //jdbc:mysql:
       String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false";
       //将用户名和密码封装再Properties中
        Properties info=new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");
        Connection connect = driver.connect(url, info);
        System.out.println(connect);
    }

2番目の接続方法は、最初の方法を繰り返すことです(目的は、サードパーティのAPIを回避して、プログラムの移植性を向上させることです)

    @Test
    public void testConnection2() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
    
    
        //1.获取Driver实现类对象(通过反射)
        Class clazz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //2.提供要连接的数据库
        String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false";
        //3.提供连接需要的用户名和密码
        Properties info = new Properties();
        info.setProperty("user", "root");
        info.setProperty("password", "123456");
        //4.获取连接
        Connection connection = driver.connect(url, info);
        System.out.println(connection);
    }

接続方法4

    @Test
    public void testConnection4() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
    
    



        //1.提供另外三个基本信息
        String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false";
        String user="root";
        String password="123456";
        //2.加载Driver
     Class.forName("com.mysql.jdbc.Driver");
        //相对方式三可以省略如下操作
//        Driver driver=(Driver)clazz.newInstance();
//        //注册驱动
//        DriverManager .registerDriver(driver);
        //获取连接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }

接続方法5(最終版)

 @Test
    public void testConnection5() throws Exception {
    
    
//1.加载配置文件
        InputStream is =
                ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties pros = new Properties();
        pros.load(is);
//2.读取配置信息
        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");
//3.加载驱动
        Class.forName(driverClass);
//4.获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
    }

翌日、JDBC(Javaデータベース接続)スタディノートに移動します

おすすめ

転載: blog.csdn.net/qq_44788518/article/details/108370047