0
0

DAO,DTO,Entity, findAll, findByld

Last updated at Posted at 2024-09-29

今回はDAO,DTO,Entity、 findAll, findByldについて記事にしていと思います。

  1. DAO (Data Access Object)
    DAOは、データベースなどから「情報を取り出したり、更新したりするための専用のクラス」です。
    たとえば、ゲームのスコアやユーザー情報を取り出す部分をまとめておくのがDAOの役割です。
    DAOは、データベースとのやり取りに集中するので、表示や計算などは行わず、あくまでデータの「取得や更新だけ」をします。

  2. DTO (Data Transfer Object)
    DTOは、データを一つのまとまりにして、別の部分に送るためのクラスです。
    たとえば、ゲームの情報(スコア、名前、レベルなど)を一つの箱にまとめて、ほかの場所に渡すために使います。
    DTOは、データを保存する箱のようなもので、特別な動作はせず、ただデータを持っているだけです。

  3. 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)**をコンストラクタで渡してあげないと、データベースにアクセスできません。
だから、コンストラクタを実装する理由は、「データベースとの接続に必要な道具を最初に準備するため」です。

  1. findAllとは?
    findAllは、「すべてのデータを集めてきてね!」という命令です。データベースの中にたくさんの情報(たとえば、学校のクラスの全員の名前や成績)が入っているとしたら、その全部を取り出すために使います。

たとえば: もし「クラスの全員の名前を知りたい!」と思ったら、このfindAllを使って、「クラスの全員の情報を全部持ってきて!」と命令できます。

public List<User> findAll() {
    // データベースの中にある「全員」の情報を集めて、リストにして返す
    return entityManager.createQuery("SELECT u FROM User u", User.class).getResultList();
}

この命令では、「User」というクラスの全員の情報をリストとして集めてくれます。

  1. findByIdとは?
    findByIdは、「特定のID(番号)に対応するデータを取ってきて!」という命令です。たとえば、「クラスの中からID番号が5番の生徒の名前だけ知りたい!」というときに使います。

たとえば: もし「IDが5番の人が誰か知りたい!」と思ったら、このfindByIdを使って、「IDが5番の情報を持ってきて!」と命令できます。

public User findById(int id) {
    // 指定されたIDの人の情報をデータベースから探して返す
    return entityManager.find(User.class, id);
}

この命令では、「IDが〇〇番のUser(人)」を見つけてその人の情報を返してくれます。

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