SSHフレームワークの原理とプロセスは何ですか

爱喝马黛茶的安东尼
リリース: 2019-07-25 14:41:47
オリジナル
6519 人が閲覧しました

SSHフレームワークの原理とプロセスは何ですか

##SSH (Struts2 Spring Hibernate) フレームワーク プロジェクト、アーキテクチャは主に 3 つのレベルに分かれています:

( 1) Struts2: Web 層を担当します

(2) Spring: ビジネス層管理

(3) Hibernate: データ永続性を担当します

Struts2 の動作原理:

#1. サーブレット コンテナへのリクエストを初期化します。

2. リクエストは web.xml で構成されたフィルターによってフィルターされ、FilterDispatcher (struts2 コントローラーのコア) は、リクエストを処理するために Action を呼び出す必要があるかどうかを ActionMapper に尋ねます。 ActionMapper が Action を呼び出す必要があると判断した場合、FilterDispatcher はリクエストの処理を ActionProxy に引き渡します。

3.ActionProxy は、構成ファイル Struts.xml 構成ファイルを通じて呼び出す必要がある Action クラスを見つけます。

4.ActionProxy は ActionInvocation インスタンスを作成し、ActionInvocation はプロキシ モードを通じて Action を呼び出します。ただし、呼び出す前に、ActionInvocation は設定に従ってすべてのアクション関連のインターセプター (インターセプター) をロードします。

5. アクションが実行された後、ActionInvocation は、struts.xml 内の構成に基づいて、対応する戻り結果を検索します。

つまり、開発者は http リクエストを送信します。このリクエストは web.xml のフィルターによってフィルタリングされ、アクションを呼び出す必要があるかどうかが確認されます。必要な場合は、リクエストを実装するメソッドが Struts で見つかります。 .xml を作成し、操作の結果を返します。

関連する推奨事項: 「

java 開発チュートリアル

Hibernate の動作原理:

1. 構成ファイルを読み取り、解析します。

2. マッピング情報の読み取りと解析、SessionFactory の作成

3. セッションを開く

4. トランザクション Transation の作成

5. 永続化操作

6. トランザクションを送信する

7. セッションを閉じる

8. SesstionFactory を閉じる

つまり、xxx.hbm.xml は、Spring によって管理される Hibernate の初期化中にロードされます。解析マッピング情報を読み取り、SessionFactory を作成します。次に、セッションを開き、セッションを通じて操作して送信します。最後にセッションを閉じて、SessionFactory を閉じます。

Hibernate の Bean の 3 つの状態

Hibernate オブジェクトは、一時的な状態 (インスタンス化されたときに新規またはセッションに依存しない)、永続的な状態 (セッションに関連付けられている)、および自由な状態 (一度だけ) の 3 つの状態に分割されます。セッションに関連付けられています)。このうち、永続オブジェクトは PO、一時オブジェクトと管理オブジェクトは VO として使用できます。 (PO を直接 v 層として使用しないでください) したがって、使用時には 3 つの状態の変換に注意する必要があります。

例:

一連のデータ操作では、save または saveorupdate 操作で一時オブジェクトまたは解放オブジェクトを永続オブジェクトに変換できますが、削除またはセッションのクローズ、フラッシュなどの操作では、セッションに関連付けられた永続状態オブジェクトを自由状態に変換します。

Hibernate オブジェクトの状態とライフサイクル

new 演算子を使用して初期化されたオブジェクトは一時的 (Transient) です (アプリケーションが実行していない限り、データベース テーブルに関連付けられた動作はありません)。これらのオブジェクトのステータスは、ガベージ コレクション メカニズムによって失われ、リサイクルされます);

一時オブジェクトは、save() および saveOrUpdate を通じて永続オブジェクトに変換され、セッション。永続オブジェクトの操作はデータベース同期と同じです。

永続オブジェクトは、evict()、close()、clear() などの後に空き状態に変換されます。それは永続的ですが、セッション キャッシュにはありません。lock()、update() を通じて、saveOrUpdate は永続状態に変換されます。 get()、load()、find()、および iterate() を通じて取得されたオブジェクトは直接永続的です。

Spring の仕組み:

SSH フレームワークでは、Spring はコンテナを管理する役割を果たします。 Hibernate が永続層として使用されていることは誰もが知っています。これは、Hibernate が JDBC の適切なカプセル化を提供し、プログラマがデータベースと対話するときに大量の SQL ステートメントを作成する必要がないためです。 Struts はアプリケーション層として使用され、ビジネス ロジック サービス層の呼び出しを担当します。

つまり、SSH フレームワークのプロセスは大まかに次のとおりです。 Jsp ページ----Struts----サービス (ビジネス ロジック処理クラス)---Hibernate (左から右)

struts Service (ビジネスロジック処理クラス) の制御を担当し、Service のライフサイクルを制御する このように、レイヤー間の依存関係は非常に強く、結合しています。

現時点では Spring Framework を利用することで、Action オブジェクト (Strus 内) と Service クラスを制御する役割を果たしており、両者の関係は緩やかです Spring の Ioc 機構 (制御の反転と依存性注入)ここでは が使われています。

制御の反転: プログラム コードによって直接制御される従来の実装ではなく、コンテナがプログラム間の (依存) 関係を制御します。

依存関係の注入: コンポーネント間の依存関係は実行時にコンテナによって決定され、コンテナは特定の依存関係をコンポーネントに動的に注入します。

Spring (AOP アプリケーション) を使用する 2 番目の利点:

トランザクション処理:

以前の JDBCTemplate では、トランザクションは正常に送信され、Try/Catch によって例外処理が完了していました。 Spring コンテナは、例外発生時のトランザクション ロールバック、操作成功時のデータ送信、その他の複雑なビジネス機能を含む、すべてのトランザクション処理機能をカプセル化する TransactionTemplate を統合します。これはすべて Spring コンテナーによって管理されるため、プログラマーのコード量が大幅に削減され、トランザクションの適切な管理と制御が提供されます。 Hibernate にはトランザクション管理もあり、Hibernate でのトランザクション管理は、SessionFactory を通じてセッションを作成および維持することによって実現されます。 Spring には SessionFactory 設定も統合されているため、hibernate.cfg.xml を通じて SessionaFactory を設定する必要はありません。

このようにして、Sping の強力なトランザクション管理機能を有効に活用できます。

トランザクションの開始/送信/ロールバックのためのセッション インスタンスの取得や、データを操作するたびの面倒な Try/Catch 操作の必要性を回避します。

これらは、Spring の AOP (アスペクト指向プログラミング) メカニズムの優れたアプリケーションです。一方で、ビジネス ロジックの開発がより明確になり、専門的な分業が容易になります。

一方、Spirng AOP 分離を適用するとプログラムの結合が軽減され、異なるアプリケーションのさまざまな側面を組み合わせることができるため、コードの再利用が大幅に向上します。

以上がSSHフレームワークの原理とプロセスは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート