LoginSignup
51
69

More than 5 years have passed since last update.

5分で分かるTERASOLUNA5.x !

Last updated at Posted at 2017-11-08

0. はじめに

最近、研修等で「TERASOLUNA Server Framework for Java (5.x)」について説明する機会が増えてきました。公式ガイドライン は詳細に書かれていて概要(全体像)を理解するには難しいため、毎回ホワイトボードに概要を書いて説明していました。
せっかくなので今回TERASOLUNA5.xの概要を記事としてまとめました。これからTERASOLUNA5.xを使ってみたい人の理解に少しでも役立ては幸いです。

1. TERASOLUNA5.xとは?

TERASOLUNA5.xとはNTTデータが無償で公開しているフレームワーク&ガイドラインで、エンタープライズ開発で広く使われているOSSを組み合わせた動作検証済みのノウハウ集みたいなものです。
利用しているOSSの概要は以下の通りです。

項番 機能 OSS
1 DIコンテナ  Spring Framework 4.3
2 MVCフレームワーク Spring MVC 4.3
3 DBアクセス MyBatis 3.4 または JPA2.1(プロバイダは Hibernate 5.0)
4 入力チェック BeanValidation 1.1(実装は Hibernate Validator 5.2)
5 セキュリティ(認証、認可) Spring Security 4.1

スタックの詳細については公式ガイドラインの「2.1. TERASOLUNA Server Framework for Java (5.x)のスタック」を参照ください。

2. コンポーネントの概要

TERASOLUNA5.xのアプリケーションを実装する際の主要なコンポーネントについて、レイヤ毎に概要を説明したいと思います。

2.1. アプリケーション層のコンポーネント(Webプロジェクトの資材)

いわゆるプレゼンテーション層を担当するコンポーネントです。

Controller Form JSP Helper Validation
説明 画面遷移を制御するクラス 入力データを保持するクラス
入力チェックを設定するクラス
画面を構成するファイル Controllerのサポートクラス 独自の入力チェッククラス
必須
工数 大きい 小さい 大きい 小さい 普通

2.2. ドメイン層のコンポーネント(Domainプロジェクトの資材)

業務ロジックや永続化を担当するコンポーネントです。
今回はMyBatisを利用する場合について以下に示します。JPAを利用する場合は構成が異なるので注意してください。

Service
インターフェース
ServiceImpl
【業務ロジック】
モデル、エンティティ、入出力ビーン Repository
インターフェース
Mapperファイル
【業務ロジック】
説明 業務ロジックのインターフェース 業務ロジックを実装するクラス 業務データを格納するクラス DBアクセスのインターフェース SQLを記述するXMLファイル
必須
工数 小さい 大きい 小さい 小さい 大きい

(依存関係について)

レイヤ間の依存関係(ライブラリの依存関係)として、アプリケーション層はドメイン層に依存します。
アプリケーション層からドメイン層のコンポーネントを利用することができますが、反対にドメイン層からアプリケーション層のコンポーネントを利用することはできません。

3. 各コンポーネントとデータと処理の流れ

3.1. イメージ

3.2. データと処理の流れ

  1. 入力したデータはFormに格納される。
    必要ならその際、入力チェックを実施する。
  2. ControllerのメソッドでFormを引数として受け取る。
    業務ロジックを実行するためServiceのメソッドを呼び出す。
    トランザクション境界はServiceのメソッドである。
  3. ServiceはRepositoryを利用してDBアクセスを行う。
    Repositoryのメソッドを呼び出すと、Mapperファイルに記述したメソッドに対応するSQLが実行される。
    必要なら複数のRepositoryを利用する。
  4. Controllerは画面に表示するデータをSpring MVCのModelに格納する。
    JSPはModelに格納されているデータを利用し、画面を構築する。
    JSPがHTMLに変換されてHTTPレスポンスとして返却される。

4. アプリケーション層のコンポーネントの詳細

4.1. Controller

  • 画面遷移を制御するクラス
  • 普通のJavaクラス
  • Struts1のstruts-config.xml相当の内容を担当
  • @Contollerアノテーションや@RequestMappingアノテーションが付与されているのがポイント

4.2. Form

  • 入力データを保持するクラス
  • 普通のJavaクラス
  • 入力チェックのルールを設定するクラス
  • Struts1のvalidation.xml相当の内容を担当
  • @Max@Size@NotEmpty等々の入力チェックのアノテーションが付与されているのがポイント

4.3. JSP

  • 画面を実装するファイル
  • 普通のJSP
  • Spring MVCのタグもあるが、ほとんどEL式とJSPタグを利用

4.4. Helper(オプション)

  • Controllerのサポートクラス
  • 普通のJavaクラス
  • Controllerの処理が大きくなった場合に作成したり、複数のControllerの共通的な処理として作成
  • DIコンテナに登録するため@Componentアノテーションを付与する
  • @Component=Helperではないので注意すること

4.5. Validation(オプション)

  • 独自の入力チェックを実装するクラス
  • Bean Validationの仕様に沿って作成
  • チェック用のアノテーションとチェック処理の実装クラスの2つで構成される

5. ドメイン層のコンポーネントの詳細

5.1. Serviceインターフェース

  • 業務ロジックのインターフェース
  • 普通のJavaインターフェース

5.2. ServiceImpl

  • 業務ロジックを実装するクラス
  • 普通のJavaクラス
  • @Serviceアノテーションが付与されているのがポイント
  • DBアクセスが必要な場合、@Transactionalアノテーションを付与する
  • DBアクセスが必要な場合、Repositoryインターフェースをインジェクションして利用

5.3. モデル、エンティティ、入出力ビーン

  • 業務データを格納するクラス
  • 普通のJavaクラス
  • DTOやDBのテーブルに対応したEntityのクラス等

5.4 Repositoryインターフェース

  • DBアクセスのインターフェース
  • 普通のJavaインターフェース
  • 引数や戻り値の型変換やオブジェクトとレコードのマッピングをMyBatisが簡単にやってくれる

5.5. Mapperファイル

  • SQLを記述するXMLファイル
  • MyBatisのルールに従って作成
  • バインド変数(入力パラメータ)の状況に応じて動的にSQLを変更する動的SQLが便利

6. さいごに

今回はTERASOLUNA5.xの概要について説明しました。ここではなんとなく全体像を分かってもらえれば十分です。
実際にTERASOLUNA5.xを利用してWebアプリを実装するには各コンポーネントの実装方法、環境構築、ツールの使い方、テストの実施方法等々を覚える必要があります。「TERASOLUNA5.x記事のまとめページ」に記事をまとめていますので、興味のある方は参照ください。

51
69
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
69