[戻る]

Java読書会BOF「基礎からのサーブレット/JSP 第5版」を読む会 第4回

開催概要

場所

てくのかわさき 第4研修室

出席者(敬称略)

高橋(智)、吉本、高橋(徹)

  • 本日は、p.224「15章 JavaBeansとDAO」から

Chapter 15 JavaBeansとDAO

JavaBeansとは

DAOとは

  • p.234 List 15-04 DAOクラスのDataSource取り出しは、マルチスレッド環境なのでnullチェックはsynchronizedで実施すべきでは? この場合は実害はないかと思われるが。

    • 同、getConnectionはサブクラスから呼び出す前提なので、protectedが望ましい

    • InitialContextもDataSourceを取得したらすぐにcloseすべき

  • p.235 List 15-05 ProductDAO この本全体を通してJDBCプログラミングにおいて次の問題がある

    • ResultSetのcloseがない。コネクションプールがほぼ常態化されているので、クローズすべき。

    • 処理途中で例外で抜けても必ずcloseを呼ぶようにすべき。

    • ResultSetは、それを取得したconnectionをcloseすればcloseされるとの言及もネットでは見かけるが、JDBCドライバの作りによって、ステートメントのcloseをしてもResutlSetが必ずしも解放されるとは限らない

  • p.236 「データベースから切断するときに、ResultSetオブジェクトは破棄されてしまう」

    • コネクションプールがある場合、データベースから切断されないのでは?

  • 【宿題】p.244 List Insert2.java で、SQLの検索で、条件に LIKE '%%' を指定すると全数検索になるのか? SQL仕様を調べよう

Chapter 16 スコープとリクエスト属性

サーブレット/JSPにおける属性とスコープ

Chapter 17 セッション

セッション属性の活用例

  • 誤植 p.266 下三行目 SuppressWarning は、SuppressWarningsの誤記

  • p.267 4行目 「SupressWarningsアノテーションは、クラス宣言やメソッド宣言の直前に記述することができます。」とあるが、SuppressWarningsアノテーションの適用先の定義は次となっている。

@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,MODULE})
  • よって、クラスやメソッド意外にも、フィールド、引数、ローカル変数などにも記述することができる。次はローカル変数に指定した例でコンパイルは通った。

@SuppressWarnings("unchecked")
List<Product> cart = (List<Product>) session.getAttribute("cart");
  • したがって、p.267 8行目の「長いメソッドの場合には、SuppressWarningsアノテーションが必要な部分だけを短いメソッドに切り出す方法もあります。」は言及が不要ではないか。

Chapter 18 クッキー

  • p.277 メッセージヘッダ の表現はRFCにある?

    • RFC 2616 HTTP/1.1 には見出しで4.2 Message Headers とある

    • RFC 9112 HTTP/1.1 には見出しで Message Headersはなくなり、Header Fieldになっている

  • 【誤植】pp.281-282 List 18-03 p.281の最後の行とp.282の最初の行が同じ(重複)

本日は、p. の末尾まで読み終わりました。 次回は、p. からです。

[戻る]