検索
ホームページ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 Spring怎么实现定时任务Java Spring怎么实现定时任务May 24, 2023 pm 01:28 PM

java实现定时任务Jdk自带的库中,有两种方式可以实现定时任务,一种是Timer,另一种是ScheduledThreadPoolExecutor。Timer+TimerTask创建一个Timer就创建了一个线程,可以用来调度TimerTask任务Timer有四个构造方法,可以指定Timer线程的名字以及是否设置为为守护线程。默认名字Timer-编号,默认不是守护线程。主要有三个比较重要的方法:cancel():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响purge():从任务队

Java axios与spring前后端分离传参规范是什么Java axios与spring前后端分离传参规范是什么May 03, 2023 pm 09:55 PM

一、@RequestParam注解对应的axios传参方法以下面的这段Springjava代码为例,接口使用POST协议,需要接受的参数分别是tsCode、indexCols、table。针对这个Spring的HTTP接口,axios该如何传参?有几种方法?我们来一一介绍。@PostMapping("/line")publicList

Spring Boot与Spring Cloud的区别与联系Spring Boot与Spring Cloud的区别与联系Jun 22, 2023 pm 06:25 PM

SpringBoot和SpringCloud都是SpringFramework的扩展,它们可以帮助开发人员更快地构建和部署微服务应用程序,但它们各自有不同的用途和功能。SpringBoot是一个快速构建Java应用的框架,使得开发人员可以更快地创建和部署基于Spring的应用程序。它提供了一个简单、易于理解的方式来构建独立的、可执行的Spring应用

Spring 最常用的 7 大类注解,史上最强整理!Spring 最常用的 7 大类注解,史上最强整理!Jul 26, 2023 pm 04:38 PM

随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。

从零开始学Spring Cloud从零开始学Spring CloudJun 22, 2023 am 08:11 AM

作为一名Java开发者,学习和使用Spring框架已经是一项必不可少的技能。而随着云计算和微服务的盛行,学习和使用SpringCloud成为了另一个必须要掌握的技能。SpringCloud是一个基于SpringBoot的用于快速构建分布式系统的开发工具集。它为开发者提供了一系列的组件,包括服务注册与发现、配置中心、负载均衡和断路器等,使得开发者在构建微

Java Spring框架创建项目与Bean的存储与读取实例分析Java Spring框架创建项目与Bean的存储与读取实例分析May 12, 2023 am 08:40 AM

1.Spring项目的创建1.1创建Maven项目第一步,创建Maven项目,Spring也是基于Maven的。1.2添加spring依赖第二步,在Maven项目中添加Spring的支持(spring-context,spring-beans)在pom.xml文件添加依赖项。org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE刷新等待加载完成。1.3创建启动类第三步,创

Java Spring Bean生命周期管理的示例分析Java Spring Bean生命周期管理的示例分析Apr 18, 2023 am 09:13 AM

SpringBean的生命周期管理一、SpringBean的生命周期通过以下方式来指定Bean的初始化和销毁方法,当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法二、通过@Bean的参数(initMethod,destroyMethod)指定Bean的初始化和销毁方法1、项目结构2、PersonpublicclassPerson{publicP

spring设计模式有哪些spring设计模式有哪些Dec 29, 2023 pm 03:42 PM

spring设计模式有:1、依赖注入和控制反转;2、工厂模式;3、模板模式;4、观察者模式;5、装饰者模式;6、单例模式;7、策略模式和适配器模式等。详细介绍:1、依赖注入和控制反转: 这两个设计模式是Spring框架的核心。通过依赖注入,Spring负责管理和注入组件之间的依赖关系,降低了组件之间的耦合度。控制反转则是指将对象的创建和依赖关系的管理交给Spring容器等等。

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。