JavaにおけるDTO(Data Transfer Object)とDAO(Data Access Object)の関係は以下の通りです。
DTOは、データベースの1行(レコード)に相当するデータを保持するためのシンプルなオブジェクトです。主にゲッター・セッターのみを持ち、ビジネスロジックは含みません。データの受け渡し専用で、アプリケーション層やデータベース層など異なる層間でデータを転送する役割を担います。
DAOは、データベースへのアクセスや操作(検索・登録・更新・削除など)を担当するクラスです。DAOはSQLの実行やO/Rマッピングのロジックを持ち、DTOを使ってデータベースとやり取りします。
関係性のまとめ
DAOはデータベースからデータを取得し、そのデータをDTOに詰めてアプリケーションに渡します。
逆に、アプリケーションから受け取ったDTOのデータを使って、DAOがデータベースに保存や更新を行います。
DTOはDAOのメソッドの引数や戻り値として利用され、DAOとアプリケーション層の橋渡し役となります。
役割 | DTO | DAO |
---|---|---|
主な目的 | データの転送 | データベースアクセスの抽象化 |
機能 | データの保持と転送 | データベース操作(CRUD等) |
ビジネスロジック | 含まない | データアクセスに関するロジック |
使用場所 | 層間のデータ受け渡し | データアクセス層 |
このように、DAOがデータベース操作を担当し、その入出力データをDTOが担うという関係になっています。