今回はDAO,DTO,Entity、 findAll, findByldについて記事にしていと思います。
-
DAO (Data Access Object)
DAOは、データベースなどから「情報を取り出したり、更新したりするための専用のクラス」です。
たとえば、ゲームのスコアやユーザー情報を取り出す部分をまとめておくのがDAOの役割です。
DAOは、データベースとのやり取りに集中するので、表示や計算などは行わず、あくまでデータの「取得や更新だけ」をします。 -
DTO (Data Transfer Object)
DTOは、データを一つのまとまりにして、別の部分に送るためのクラスです。
たとえば、ゲームの情報(スコア、名前、レベルなど)を一つの箱にまとめて、ほかの場所に渡すために使います。
DTOは、データを保存する箱のようなもので、特別な動作はせず、ただデータを持っているだけです。 -
Entity (エンティティ)
Entityは、データベースのデータをプログラム内で管理するためのクラスです。
たとえば、学校の生徒名簿のように、名前や年齢、住所などをまとめて管理するためのものです。
Entityは、データベースにある1つの情報(1人の生徒や1つのゲームキャラクターなど)に対応することが多いです。
DAO,DTOの例
// DTO: UserDto
public class UserDto {
private String username;
private String email;
// getters and setters
}
}
// DAO: UserDao
public class UserDao {
public User findById(int id) {
// データベースからIDでユーザーを検索する処理
return new User();
}
}
public List<User> findAll() {
// 全ユーザーを検索する処理
return new ArrayList<>();
}
}
Entity (エンティティ)の例
エンティティはデータベースのテーブルに対応するクラスです。フィールドはテーブルの列に対応し、オブジェクト関係マッピング(ORM)を使用してデータベース操作を簡略化します。
例
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String email;
// getters and setters
}
UserDaoのコンストラクタ実装
UserDaoクラスのコンストラクタを実装します。コンストラクタ内で必要な依存関係を注入します。
例
public class UserDao {
private EntityManager entityManager;
// コンストラクタでEntityManagerを受け取る
public UserDao(EntityManager entityManager) {
this.entityManager = entityManager;
}
}
コンストラクタは、「オブジェクトを作るときに必要な準備をするための特別な関数」です。
UserDaoでは、データベースとやり取りする道具(EntityManager)**をコンストラクタで渡してあげないと、データベースにアクセスできません。
だから、コンストラクタを実装する理由は、「データベースとの接続に必要な道具を最初に準備するため」です。
- findAllとは?
findAllは、「すべてのデータを集めてきてね!」という命令です。データベースの中にたくさんの情報(たとえば、学校のクラスの全員の名前や成績)が入っているとしたら、その全部を取り出すために使います。
たとえば: もし「クラスの全員の名前を知りたい!」と思ったら、このfindAllを使って、「クラスの全員の情報を全部持ってきて!」と命令できます。
例
public List<User> findAll() {
// データベースの中にある「全員」の情報を集めて、リストにして返す
return entityManager.createQuery("SELECT u FROM User u", User.class).getResultList();
}
この命令では、「User」というクラスの全員の情報をリストとして集めてくれます。
- findByIdとは?
findByIdは、「特定のID(番号)に対応するデータを取ってきて!」という命令です。たとえば、「クラスの中からID番号が5番の生徒の名前だけ知りたい!」というときに使います。
たとえば: もし「IDが5番の人が誰か知りたい!」と思ったら、このfindByIdを使って、「IDが5番の情報を持ってきて!」と命令できます。
例
public User findById(int id) {
// 指定されたIDの人の情報をデータベースから探して返す
return entityManager.find(User.class, id);
}
この命令では、「IDが〇〇番のUser(人)」を見つけてその人の情報を返してくれます。