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