松信 嘉範 著
本書はJava言語によるDBプログラミングに焦点を当てた解説書です。DBプログラミングの標準的な方法であるJDBCやO/Rマッピング、現在主流のEJB 3.0 Persistence APIについて、基礎から使い方まで徹底的に分かりやすく解説しています。また、Java EEサーバーを使用したWeb-DBアプリケーションのプログラミング手法に加え、Web-DBアプリケーションで問題となりやすいSQLインジェクションなどのセキュリティ問題や、パフォーマンスチューニング、文字化けといった現場開発者の悩みどころとなりやすい実用的な内容も積極的に盛り込んでいます。JavaによるDBプログラミングのバイブルとなる1冊です!
本書は、DBマガジンの人気連載「Javaデータアクセス優先主義」を加筆/修正し、書籍としてまとめたものです。
Chapter 1 JavaによるDBプログラミングの概要
本書の概要
DBプログラミングの要点と課題
O/Rマッピングによる対応付け
O/Rマッピングにおける「インピーダンスミスマッチ」
JDBC APIによるプログラミング
O/RマッピングフレームワークによるDBプログラミング
JDBCを知らなくて良いか?
DBプログラミングにおける設計パターン
層に分けて開発する「レイヤアーキテクチャ」
データアクセス層を実装する「DAOパターン」
DBプログラミングで注意すべきこと
パフォーマンスチューニング
プログラミング上の作法
トランザクション管理
セキュリティ
文字化け(日本語処理)
Chapter 2 JDBCによるDBプログラミング
JDBCのおさらい
JDBCのバージョン
JDBCドライバの入手
DBへの接続/切断プログラムの作成
パッケージのインポート
JDBCドライバのロード
DBとの接続
SQLExceptionの処理
接続の終了処理
動作確認
SQL文の実行プログラムの作成
PreparedStatementの作成/実行
Statementの作成/実行
ResultSetとカーソル
プログラムの動作確認
メタ情報の取得
RDBMSのパフォーマンスチューニング
トランザクション制御の基礎知識
Javaによるトランザクション制御の実装
DBプログラミングでのチューニング技法
トランザクション制御
プリペアードステートメント
バッチ更新
フェッチサイズの設定とサーバーサイドカーソル
Chapter 3 SQLインジェクションの仕組みと回避方法
はじめに
SQLインジェクションによる攻撃の例
攻撃例 1:WHERE条件の無効化による全件処理
攻撃例 2:UNION句による任意のテーブルの検索
攻撃例 3:任意のSQL文の付加
SQLインジェクション攻撃の防止法
プリペアードステートメント
文字列変数のエスケープ
攻撃例 4:入力値のエスケープだけでは不十分な場合
Chapter 4 Java EE環境でのDBプログラミング
Java EEサーバーの特徴
Webアプリケーションの特長
Java EEサーバーの種類
JNDIとデータソース
JBossのセットアップ
JBossのダウンロードとインストール
コンフィグレーション領域の作成
JBossのMySQL対応の手順
JBossの起動
DBへの接続を確認する
Java EE環境でのチューニング技法
コネクションプーリング
プリペアードステートメントキャッシュ
サンプルプログラムの概要
レイヤアーキテクチャと依存関係の整理
サンプルで学ぶWeb+DBプログラミング
ドメインオブジェクトのProductクラス
ビジネスロジック層のProductLogicクラス
Daoクラスを使用したDBアクセス
Web層における画面表示/制御のロジック
JBossへのデプロイと実行
Webアプリケーションにおける排他制御
Version Numberパターンによる排他制御
Daoクラスの更新用メソッドの修正(LIST20)
Chapter 5 DIコンテナの概要と利用方法
DIコンテナの概要
インターフェイスベースの設計と依存度
DIコンテナの種類
Spring Frameworkを利用したサンプルプログラム
Spring Frameworkを利用したプログラムの書き換え
プログラムの書き換えによるメリット
DIコンテナとアスペクト指向(AOP)
宣言型トランザクション機能とは
Chapter 6 ORMによるDBプログラミング(iBATIS編)
iBATISによるO/Rマッピング
解説用テーブルとテストデータの作成
iBATISによる簡単なSQL文の実行
設定ファイルの読み込み
SQL文の実行と1件の検索結果の取得
Beanでの検索結果の取得
複数件の検索結果の取得
トランザクション制御と更新系SQL文の実行
複数のバインド変数の渡し方
トランザクション制御
ジョインと動的SQL文の実行
ジョインの記述
条件別の動的SQL文の記述
Chapter 7 ORMによるDBプログラミング(S2Dao編)
S2Daoとは
S2Dao実行環境のセットアップと解説用テーブルの作成
S2DaoによるDBプログラミング
JavaBeanクラスの作成(LIST2)
Daoインターフェイスの作成(LIST3)
SQL文定義ファイルの記述(LIST4)
業務ロジッククラスの作成(LIST5、LIST6)
diconファイルの記述(LIST7、LIST8 )
呼び出し元クラスの作成と実行(LIST9)
Version Numberパターンによる排他制御
ジョインの実行
Chapter 8 EJB3 入門(1)―EJB3の基礎技術
EJB3はどこが変わったのか
GlassFishのセットアップ
管理コンソールの操作
EJB3によるアプリケーション作成
業務ロジッククラスの作成
データアクセスクラスの作成
サーブレットとweb.xmlの作成
アプリケーションのパッケージング/デプロイ/実行
EJB3の技術解説
リモートインターフェイスとローカルインターフェイス
ステートレスセッションBeanとステートフルセッションBean
宣言型トランザクションの利用
Chapter 9 EJB3 入門(2)―Java Persistence APIによる基本操作
JPAによるDBプログラミングの基礎
Hibernateの入手
エンティティクラスの実装
呼び出し元クラスの実装
EntityManagerの取得
トランザクション制御
検索結果の取得(SELECT文)
永続オブジェクトの値操作(UPDATE文)
新しい永続オブジェクトの登録(INSERT文)
永続オブジェクトの削除(DELETE文)
設定ファイル「persistence.xml」の記述
Persistence Unitとは
呼び出し元クラスの実行
JPAによるプログラミングTips
永続オブジェクト
SQL文の実行タイミング
SQL文実行のコントロール
更新件数の取得は難しい
JPA Query Language
戻り値となるオブジェクトの数
Named Query
検索結果の部分抽出
Chapter 10 EJB3 入門(3)―JPAによるオブジェクト関連の処理
2つのテーブルからの検索処理
オブジェクト関連の設定
find()による永続オブジェクトの取得(Lazy Load)
find()による永続オブジェクトの取得(Eager Load)
Lazy LoadとEager Loadの切り替え
JPQLによる永続オブジェクトの取得
全件検索の処理
Lazy LoadとN+1 Select Problem
FETCHジョインによるEager Load
DISTINCT句による重複エンティティの削除
Chapter 11 EJB3 入門(4)―WebアプリケーションからのJPAプログラミング
WebアプリケーションとJPA
エンティティクラスでのVersion Numberパターンの実装
JPAによるDaoの実装(ProductDaoBeanクラス)
そのほかのクラス/設定ファイル
デプロイと実行
Lazy Loadによる副作用と対処法
オブジェクトの明示的コピー
ステートフルセッションBean「Extended Persistence Context」の使用
Chapter 12 Kuina-DaoによるDBプログラミング
Kuina-Dao開発環境のセットアップ
「Dolteng」「Diigu」のセットアップ
Kuina-Daoによるプログラミング
Daoインターフェイスの作成
主キー検索
一意キー検索
複数件取得(全件取得)
業務ロジッククラスの作成
サービスクラスの作成
MySQLへの対応
呼び出し元クラスの作成と実行
Kuina-Daoの各種機能
2Way SQL機能
さまざまな条件による検索
LIKE検索
不等号による大小比較
検索結果の部分抽出
条件が複数ある場合
FETCH JOINによる検索
関連先テーブルを条件にしたジョイン
Named Queryの実行
更新系処理
Diiguによるクラスファイルの修正
Chapter 13 JavaによるDBプログラミングのエッセンス
アプリケーションとDBプログラミング
RDBMS技術とDBプログラミング
データベース接続とコネクションプーリング
トランザクション
デザインパターンと技術動向の理解
レイヤアーキテクチャとDaoパターン
Dependency InjectionとAOP
トランザクション制御
セキュリティ
JDBCとO/Rマッピング
JDBCによるコーディング
JPAによるコーディング
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||
---|---|---|---|---|---|---|---|---|---|
1刷 | 122~123 LIST11 |
2刷 | 未 |
|
2011.06.01 | ||||
1刷 | 238 箇条書きの下3行目 |
2刷 | 未 |
|
2011.06.01 |
らう さん
2011-02-13
DBまわりに特化した本で結構貴重価値あり。Spring/SeasaaといったDIコンテナからS2DAO、iBatisといったORマッパーEJBまで網羅。DB処理に関するFactorryメソッド/Facadeパターンの有用性についても例がDBアクセスなので、よくあるりんごとみかんのような何の意味もない例題と違い、とても実用的でわかりやすい。ずっと使える本だと思う。
benjoe さん
2016-11-14
JavaでのDBアクセスに特化した本で、非常に実用的。