0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

デザインパターン - その1

Posted at

はじめに

知見の薄いデザインパターンの一部についてつらつらと調べた結果を記載していく。
サーバサイド寄りのデザインパターンかも?

DTO(Data Transfer Object)

データを転送するためのオブジェクトで、主にシステム間や層間でのデータのやり取りに使用されます。ビジネスロジックを含まず、データの格納と読み出しのみを行います.

また、単純なゲッター/セッターを持つクラスです.

DAO(Data Access Object)

データベースアクセスを抽象化するオブジェクトで、データベース操作(CRUD操作など)を行うメソッドを提供します.

また、データベース操作用のメソッドを持つクラスです

※DTOとDAOを混同しやすい気がする(私だけか?)が、間違えないように。

Bean

Beanは、Javaプログラミングの基本的な構成要素として、様々なフレームワークやアプリケーションで広く使用されています。適切に設計されたBeanは、コードの再利用性、保守性、そして全体的なアプリケーションの品質を向上させる重要な役割を果たします。

まずBeanの特徴は以下。

  1. カプセル化: Beanは、データ(プロパティ)と振る舞い(メソッド)を1つのオブジェクトにまとめます。
  2. 標準化された命名規則: Beanは、getterとsetterメソッドを使用してプロパティにアクセスします。例えば、getName()やsetName(String name)のようなメソッドを持ちます。
  3. シリアライズ可能: Beanはオブジェクトの状態を保存したり転送したりできるように、シリアライズ可能である必要があります。
  4. 無引数コンストラクタ: Beanは、引数なしのpublicコンストラクタを持つ必要があります。

次にBeanの種類は以下(私の知りたい種類を記載してみた、全然全部じゃない)

  1. JavaBeans: 一般的なJavaアプリケーションで使用される再利用可能なコンポーネントです。
  2. Enterprise JavaBeans (EJB): サーバーサイドのコンポーネントモデルで、以下のタイプがあります:
     Session Bean: セッション単位の処理を行う機能を持ちます5。
     Entity Bean: 永続的なデータの保存や参照などに用いられます5。
  3. Bean Validationは、Javaオブジェクトのデータを検証するためのモデルです:
    アノテーションベース: カスタムアノテーションを使用してデータの整合性を保ちます。
    JSR 349準拠:

エンティティ(Entity)とは?
データのかたまりで、データとして管理したい対象がエンティティと呼べる。
いわゆるデータクラスと呼ぶやつですな

Repositoryパターン

Repositoryパターンの主な特徴は以下の通りです:

  1. データアクセスの抽象化: Repositoryは、データベースや永続ストレージとのやり取りを抽象化します。
  2. ビジネスロジックとの分離: Repositoryは、ビジネスロジックを含まず、純粋にデータの取得、保存、更新、削除などの操作に特化します。
  3. インターフェースの提供: Repositoryは通常、データ操作のためのインターフェースを提供し、具体的な実装はこのインターフェースを実装するクラスで行います

Repositoryは1つのエンティティ(例:User)に対して作成するのが一般的です。
機能やロールでRepositoryを分けるのは避けましょう

RepositoryパターンとDAOパターンの違い

似通っているのだが、、調べた限りではいかな違いがありそう。
(ここ100%噛み砕けていないかも。。)

主な違い

  1. 焦点の違い
     Repository: ドメインモデル(ビジネスロジック)中心
     DAO: データベーステーブル中心
  2. 抽象化のレベル
     Repository: より高レベルな抽象化を提供
     DAO: データベース操作に特化
  3. 使用目的
     Repository: ドメインオブジェクトの永続化管理
     DAO: CRUD操作の簡潔な実装
  4. 具体的な違い
     Repositoryは「集約」という単位でデータを扱い、ビジネスロジック層がデータモデルに依存しにくくなります
     (つまり、1 つの Repository に対応する DB のテーブル数は状況次第ってことになりそう
     DAOはテーブルと1対1で対応し、呼び出し側がデータモデルを意識する必要があります

終わりに

定期的にデザインパターンの勉強のし直しはしているのだが、、
プロジェクトで採用されているデザインパターンについては最低限理解できるようにしておきたい。

以上

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?