検索
ホームページJava&#&チュートリアルSpringのJDBCデータベースのメソッドの紹介

SpringのJDBCデータベースのメソッドの紹介

May 11, 2017 am 10:08 AM
javajdbcspring接続プール

この記事では、Spring をベースにした基本的な JDBC フレームワークの構築、Spring をベースにした JDBC の追加、削除、変更、クエリ、設定ファイル内のデータの読み込みなどを紹介するので、非常に参考になります。以下のエディターで見てみましょう

データベース接続プール

単純なデータベース アプリケーションの場合、データベースへのアクセスはそれほど頻繁ではないため、データベースにアクセスする必要があるときに単に新しい接続を作成することができます。完了したら閉じてください。パフォーマンスのオーバーヘッドは発生しません。しかし、複雑なデータベース アプリケーションの場合、接続の使用がシステム パフォーマンスのボトルネックになるため、接続の確立と終了が頻繁に行われると、システムのパフォーマンスが大幅に低下します。

データベース接続プールと一連の接続使用管理ポリシーを確立することにより、接続再利用の効果が得られ、データベース接続を安全かつ効率的に再利用できるようになり、データベース接続の頻繁な確立と終了によるオーバーヘッドが回避されます。 データベース接続プールの基本原理は、

内部オブジェクト

プール内で一定数のデータベース接続を維持し、データベース接続の取得メソッドと戻りメソッドを外部に公開することです。たとえば、外部ユーザーは getConnection メソッドを通じて接続を取得し、使用後に releaseConnection メソッドを通じて接続を返すことができます。この時点では接続は閉じられていませんが、接続プール マネージャーによってリサイクルされ、次の接続に備えられることに注意してください。使用。

データベース接続プールテクノロジーの利点:

1. リソースの再利用データベース接続が再利用されるため、リンクの頻繁な作成と解放によって引き起こされる大量のパフォーマンスのオーバーヘッドが回避されます。一方、システム消費量の削減に基づいて、システムのオペレーティング環境の安定性も向上します (メモリの断片化とデータベースの一時的なプロセス/スレッドの数が減少します)

2. システムの応答が高速になります データベース接続 プールの初期化プロセス中に、バックアップのために複数のデータベース接続プールが作成され、プールに配置されることがよくあります。この時点で、接続の初期化は完了しています。ビジネス リクエストの処理では、データベース接続の初期化と解放プロセスの時間オーバーヘッドを回避するために、既存の利用可能な接続が直接使用され、システム全体の応答時間が短縮されます

。 3. データベース接続の漏洩を回避するための統合接続管理比較的完全なデータベース接続プールの実装では、事前に設定された接続占有タイムアウトに従って、占有されている接続を強制的に回復できるため、通常のデータベース接続操作で発生する可能性のあるリソースを回避できます。 。 道を譲る。

現在、主に次のようなデータベース接続プール製品があります:

1、dbcpdbcp。これは、Apache によって作成され、Spring 開発チームによって推奨されているデータベース接続プールです。開発は比較的進んでいます。これは、非常に広く使用されているデータベース接続プール製品です。しかし、インターネット

2、c3p0から、Hibernate開発チームはデータソースとJNDIのバインディングを実装するデータベース接続プールの使用を推奨しました

3、ProxoolProxoolは評判は良く、否定的なコメントはありません (たとえば、dbcp はバグが多すぎると Hibernate が考えているため、Hibernate では推奨されていません)。これは Hibernate 開発チームによって推奨されているデータベース接続プールでもありますが、ユーザー数はそれほど多くありません。開発は十分に活発ではありません。この接続プールは、便利で使いやすい接続プール監視の機能を提供し、接続プールのリークを簡単に検出できます

Spring に基づいた基本的な JDBC フレームワークの構築

まず、Spring を使用して次のことを行う方法について説明します。 JDBC を実装します。データベース接続プールは、グループによって推奨されている DBCP を使用して開発されています。DBCP には 3 つの jar パッケージが必要です。まず、公式 Web サイトで入手可能な

1、commons-dbcp-1.4.jar をダウンロードしてください。

2、commons.pool-1.6.jar、公式 Web サイト はい、ここをクリックして

3 と commons.collections4-4.0.jar をダウンロードします。これらは公式 Web サイトから入手できます

これら 3 つの jar パッケージをダウンロードした後、インポートしてください。それらを独自のプロジェクトに追加します (注:

MySql

パッケージをインポートすることを忘れないでください)。dbcp と pool の両方に dbcp2 と pool2 のバージョンがあり、Apache 公式 Web サイトからダウンロードできますが、ここで dbcp1 と pool1 が提供されている理由の 1 つは、dbcp2 と pool2 はバージョン 7 以降でのみ使用できるのに対し、dbcp1 と pool1 は JDK1.6 で実行できることです。 MyEclipse10 はバージョン 1.6 に付属しています。ここから dbcp1 と pool1 をダウンロードして使用します。 dbcp2 と pool2 が必要な場合は、Apache 公式 Web サイトからダウンロードできます。ただし、dbcp2 は pool2 とペアにし、dbcp1 は pool1 とペアにする必要があることに注意してください。 JDBC については、以前にも記事を書きましたが、ここではネイティブ JDBC を Spring JDBC に移行するだけで、その後、関数を追加していきます。学生管理カテゴリは次のとおりです:

public class StudentManager
{
 private JdbcTemplate jdbcTemplate;

 private static StudentManager instance = new StudentManager();

 public static StudentManager getInstance()
 {
 return instance;
 }

 public JdbcTemplate getJdbcTemplate()
 {
 return jdbcTemplate;
 }
 public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
 {
 this.jdbcTemplate = jdbcTemplate;
 }
}

Spring のXML設定ファイルは jdbc.xml という名前です。 jdbc.xml の記述は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-4.2.xsd">

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
 <!-- 驱动包名 -->
 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
 <!-- 数据库地址 -->
 <property name="url" value="jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8;" />
 <!-- 用户名 -->
 <property name="username" value="root" />
 <!-- 密码 -->
 <property name="password" value="root" />
 <!-- 最大连接数量 -->
 <property name="maxActive" value="150" />
 <!-- 最小空闲连接 -->
 <property name="minIdle" value="5" />
 <!-- 最大空闲连接 -->
 <property name="maxIdle" value="20" />
 <!-- 初始化连接数量 -->
 <property name="initialSize" value="30" />
 <!-- 连接被泄露时是否打印 -->
 <property name="logAbandoned" value="true" />
 <!-- 是否自动回收超时连接 -->
 <property name="removeAbandoned" value="true" />
 <!-- 超时等待时间(以秒为单位) -->
 <property name="removeAbandonedTimeout" value="10" />
 </bean>

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <property name="dataSource" ref="dataSource" />
 </bean>
 <bean id="studentManager" class="com.xrq.jdbc.StudentManager" factory-method="getInstance"> 
 <property name="jdbcTemplate" ref="jdbcTemplate" />
 </bean>
</beans>

メインの 関数 は次のとおりです。

リファレンス

は取得できます。 StudentManager のアドレスと StudentManager 内のアドレス Attribute jdbcTemplate の参照アドレスは、接続全体と注入が正常であることを示します。 JDBCTemple は Spring の最も基本的な JDBC テンプレートであり、JDBC と単純な

index

parametersquery を使用してデータベースへの簡単なアクセスを提供します。 JDBCTemplate に加えて、Spring は 2 つのクラスも提供します: NamedParameterJdbcTemplate と SimpleJdbcTemplate 前者は、インデックスを使用する代わりに、SQL の名前付きパラメーターに値をバインドできます。後者は、オートボックス化、ジェネリックス、 などの Java 5 機能を利用します。 JDBC テンプレートの使用を簡素化するための可変引数パラメーターリスト。どちらを使用するかは個人の好みによって異なります。ここでは JdbcTemplate を使用するため、JdbcTemplate を学生管理クラスに追加します。 1. dbcp はユーザー設定用の多くのパラメータを提供します。2. dbcp の属性 url は、

が発生した場合に参照します。

特殊文字

、エスケープする必要がありますので、ここの「&」は「&」になります。そうでないとエラーが報告されます

SpringのJDBCの追加、削除、変更、チェックに基づいて上記の部分Spring JDBC の基本フレームワークを構築します。Java コードが CRUD を実装する方法を見てみましょう。このプロセスでは、jdbc.xml を変更する必要はありません。 1. 生徒情報を追加します。コードは

public static void main(String[] args)
{ 
 ApplicationContext ac = 
  new ClassPathXmlApplicationContext("jdbc.xml");
 System.out.println(StudentManager.getInstance());
 System.out.println(StudentManager.getInstance().getJdbcTemplate());
}

です。2. ID に基づいて、指定された生徒情報を削除します。コードは、

// 添加学生信息
public boolean addStudent(Student student)
{
 try
 {
 jdbcTemplate.update("insert into student values(null,?,?,?)", 
  new Object[]{student.getStudentName(), student.getStudentAge(), student.getStudentPhone()},
  new int[]{Types.VARCHAR, Types.INTEGER, Types.VARCHAR});
 return true;
 }
 catch (Exception e)
 {
 return false;
 }
}
です。3. Id に基づいて、

生徒情報を更新します。コードは、次のとおりです。

// 根据Id删除单个学生信息
public boolean deleteStudent(int id)
{
 try
 {
 jdbcTemplate.update("delete from student where studentId = ?", new Object[]{id}, new int[]{Types.INTEGER});
 return true;
 }
 catch (Exception e)
 {
 return false;
 }
}

4. ID に基づいて学生情報をクエリするコードは次のとおりです:

// 根据Id更新指定学生信息
public boolean updateStudent(int Id, Student student)
{
 try
 {
 jdbcTemplate.update("update student set studentName = ?, studentAge = ?, studentPhone = ? where studentId = ?", 
  new Object[]{student.getStudentName(), student.getStudentAge(), student.getStudentPhone(), Id},
  new int[]{Types.VARCHAR, Types.INTEGER, Types.VARCHAR, Types.INTEGER});
 return true;
 }
 catch (Exception e)
 {
 return false;
 }
}

5. すべての学生情報をクエリするコードは次のとおりです:

// 根据学生Id查询单个学生信息
public Student getStudent(int id)
{
 try
 {
 return (Student)jdbcTemplate.queryForObject("select * from student where studentId = ?", 
  new Object[]{id}, new int[]{Types.INTEGER}, new RowMapper<Student>(){
  public Student mapRow(ResultSet rs, int arg1) throws SQLException
  {
  Student student = new Student(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getString(4));
  return student;
  }
 });
 }
 // 根据Id查询学生信息抛异常, 不管什么原因, 认为查询不到该学生信息, 返回null
 catch (DataAccessException e)
 {
 return null;
 }
}
これは、これら 5 つをベースとした単純な CRUD 操作です。拡張を行う際の詳細については書きませんが、いくつか注意点を挙げておきます:

1. 個人的な経験から、最後のクエリを除いて、try を追加することをお勧めします。 ...catch... ブロック。操作が失敗すると例外がスローされるため、キャプチャしないとプログラムが終了し、操作が失敗したかどうかがわかりません。 2. 情報を追加する場合、各フィールドを仮パラメータとして使用することは推奨されません。これは、Student エンティティ クラスであることをお勧めします。

オブジェクト指向の設計原則。第二に、仮パラメータリストには多くのフィールドがあり、エラーが発生しやすいです

3. プレースホルダーがある場合は、

オーバーロード

メソッドを選択することをお勧めします。上記のコードで書いたのと同じように、パラメーターの型を指定し、各プレースホルダーのフィールドの型を指定します

最後に、ここで話しているのは

jdbcTemplateの基本的な使い方です

jdbcTemplateには多くのメソッドがあるので、私が勝ちました。 1 つずつ詳しく説明することはできません。自分で試すことも、Spring API ドキュメントを確認することもできます。

設定ファイル内のデータを読み取ります前に、変更に便利な db.properties でデータベース接続のいくつかのプロパティを設定しましたが、ここでは jdbc.xml にハードコーディングされているため、 db.properties から設定を読み取る方法を考えてください。コンテキストは、jdbc.xml の記述方法を見てください:

1. Java の無料ビデオ チュートリアル 2.

JAVA チュートリアル マニュアル

3. Java アノテーションの包括的な分析

以上がSpringのJDBCデータベースのメソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Javaプラットフォームの独立性:OSの違いJavaプラットフォームの独立性:OSの違いMay 16, 2025 am 12:18 AM

さまざまなオペレーティングシステムでのJavaのパフォーマンスには微妙な違いがあります。 1)JVMの実装は、パフォーマンスとゴミ収集に影響を与えるHotspotやOpenJDKなど、異なります。 2)ファイルシステム構造とパスセパレーターは異なるため、Java標準ライブラリを使用して処理する必要があります。 3)ネットワークプロトコルの差動実装は、ネットワークパフォーマンスに影響します。 4)GUIコンポーネントの外観と動作は、システムによって異なります。標準のライブラリと仮想マシンテストを使用することにより、これらの違いの影響を減らし、Javaプログラムをスムーズに実行できるようにすることができます。

Javaの最高の機能:オブジェクト指向プログラミングからセキュリティまでJavaの最高の機能:オブジェクト指向プログラミングからセキュリティまでMay 16, 2025 am 12:15 AM

JavaOffersObustObject-OrientedProgramming(OOP)andTop-notchsecurityfeatures.1)oopinjavaincludesclasses、オブジェクト、継承、多型、老coluste、および有効化の有効化

JavaScript vs Javaの最良の機能JavaScript vs Javaの最良の機能May 16, 2025 am 12:13 AM

javascriptandjavavedistStrenctsss:javascriptexcelsindynamictypingandasynchronousprogramming、whilejavaisrobustwithstrongopandtyping.1)javascript'sdynamicnatureallowsforrapiddeddevermentand developmentandprototyping、

Javaプラットフォームの独立性:利益、制限、および実装Javaプラットフォームの独立性:利益、制限、および実装May 16, 2025 am 12:12 AM

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM)andbytecode.1)TheJVMinterpretsbytecode,allowingthesamecodetorunonanyplatformwithaJVM.2)BytecodeiscompiledfromJavasourcecodeandisplatform-independent.However,limitationsincludepotentialp

Java:本当の言葉のプラットフォームの独立性Java:本当の言葉のプラットフォームの独立性May 16, 2025 am 12:07 AM

java'splatformentencemeansemeansapplicationscanrunonanyplatformwithajvm、「writeonce、runany hwhere。」

JVMパフォーマンスと他の言語JVMパフォーマンスと他の言語May 14, 2025 am 12:16 AM

jvm'sperformanceiscompetitivewitherruntimes、sped、safety、andproductivityの提供

Javaプラットフォームの独立性:使用の例Javaプラットフォームの独立性:使用の例May 14, 2025 am 12:14 AM

javaachievesplatformedentenceTheThejavavirtualMachine(JVM)、avainwithcodetorunonanyplatformwithajvm.1)codescompiledintobytecode、notmachine-specificcode.2)

JVMアーキテクチャ:Java Virtual Machineに深く飛び込みますJVMアーキテクチャ:Java Virtual Machineに深く飛び込みますMay 14, 2025 am 12:12 AM

thejvmisanabstractcomputingMachineCrucialForrunningJavaProgramsDuetoitsPlatForm-IndopentInterChitecture.Itincludes:1)ClassLoaderForloadingClasses、2)Runtimedataareaforforforatastorage、3)executionEngineWithinterter、Jitcompiler、およびGarbagecolfecolfecolfececolfecolfer

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、