ちくのブックの最新の日記
<< 前の日記へ 一覧を見る 次の日記へ >>

 

【研修ノート】

10/31/2008

フレームワーク概論1日目】

Struts
Javaフレームワークの代表選手。
MVCフレームワーク
JFS/JPA
http://e-words.jp/w/Struts.html

Spring
個別の最適化から全体最適化へ。
つなげ合わせる役目。DIコンテナ。

!それぞれのフレームワーク間でどのような差異があるのか!
!利点、欠点を認識する!

フレームワークとは再利用可能な枠組みである。
なんかインターフェース、抽象クラスと似ている気がする。
抽象的な枠組みに、特殊化した部分を作りこむ。

Hot Spot → 拡張できる部分
フレームワークの大まかな流れを変えることはできない。
Hot Spot(インターフェース)にはまるように実装する。


【利点】
作り方が一貫する。インターフェースが決まっているため。
設計方針が共有できる。
役割分担が明確化する。分業が容易になる。
全体のみ投資が良い。計画性の向上。改修の容易性向上。
基幹部分はオープンソースコミュニティが改修している。
アプリ全体の設計が綺麗になる。


社内フレームワーク → 社内でしか実績をつめない。
オープンソース → たくさんの人が使う。いろんな人が改修を行う。


Inversion of Control(制御の反転)
個別機能が共通機能を呼ぶ → 共通機能が個別機能を呼ぶ
処理の流れはフレームワークがコントロール。


!グローバル製菓のプロジェクトで面白かった
ClassForNameとかのなぞを解き明かしたい!



【欠点】
設定ファイルが増えすぎる。
設定ファイルファック。
フレームワークを技術的に理解している、
どこに聞けば答えが得られるか知っている人が必要。
技術がつかない可能性がある。便利すぎる。
とても汎用的な仕組みとして作られている。
個別のプロジェクトに対応するために 設定する必要がる。
フレームワークの上にアプリ固有のフレームワークを載せる必要がある。
いっても開発ガイドラインを作成する必要がある。

annotation → 設定ファイルを減らす。

convention over configuration
http://en.wikipedia.org/wiki/Convention_over_Configuration


【マッピングすることによるメリット】
SQLやテーブルの構造を意識せずにJavaのオブジェクトだけを意識して
開発することができる。
開発者の意識を限定し、生産性を上げる。

SQL自動生成型(Hibernate
テーブルとクラスのマッピングを定義するだけでSQLが自動生成される。
複雑なSQL文発行には向いていない。
既存システムの改定などには向いていない。

SQL記述型(iBatis)
発行するSQLを開発者が記述する。
どんなテーブル構造でもある程度記述できる。

Hibernateとは
http://www.techscore.com/tech/Others/Hibernate/index.html


Hibernateの理念
Javaのオブジェクト世界だけを意識してデータベースを扱うことができる。
GPLライセンスのソフトウェアを使って開発したソフトウェアもGPLライセンス
で行わなければいけない。→ 公開しなければいけない。
EJB3の開発に大きな影響を与えた。

ライセンス一覧
http://javamemo.jpn.org/


SessionFactoryが接続情報、マッピング定義を読み込む。
DAOからSessionを利用する。

SessionFactory

・マッピング定義を読み込む
・Session取得元
・シングルトンで利用
・スレッドセーフ

Session

・Connectionのようなもの
・使用後はクローズする
・データの更新や、トランザクション制御をする際は、
Transactionオブジェクトを取得する必要がある
・スレッドセーフではない

Transaction制御はビジネス層でやらなければいけない。
(commit, rollback)
Connctionはビジネス層で取得するべき。



【エンティティクラスの作成】
idとemployee_idはデータベース上に作るべきか。イエス!


Hibernateの遅延ロード】
オブジェクト内オブジェクト(子オブジェクト)が大容量の場合、
いちいち親オブジェクトを読み込むときに子オブジェクトを読み込みたくない。
なのでHibernateは遅延ロードを採用している。
親オブジェクトを読み込んだときにはIdみたいなものを最初に読み込み、
子オブジェクトなどのデータは読み込まない。

どこをLazyローディングにするか。とても、とても難しい問題である。

CRUD制御だけなら便利だけどね。
関連とかはやめとけ。お前らはまだまだ未熟じゃ。

【検索系SQLを使うときにもっと柔軟なSQLを使いたい!】
HibernateHQLというSQLっぽいものがある。
ながい。。意地になってデータベースをOOな感じにしたい気持ちが伝わってくる。

コメント

コメントはまだありません

コメントできません (ログインするとコメントできます)