Domaを書く時に用意する最低限3ファイルの具体例


Domaでデータアクセスするのに必要なのは以下の3ファイル

  1. エンティティ
  2. Daoインターフェース
  3. SQLテンプレート

1. エンティティ(User.java)

データベースのデータ本体を表すクラス

User.java
@Table(name = "users")
@Entity 
@Getter
@Setter
public class User extends DomaDtoImopl{
 private static final long serialVersionUID = 123456789123456L

   @OriginalStates
   User originalstates;

   @Id
   @Column(name ="user_id")
   @GenerateValue(strategy = GenerationType.IDENTITY)
   Long id;
   String password;
   String firstName;
   String lastName;
}

メモ

@￰OriginalStatesの役割
→更新したいカラムだけ更新する
そもそも、Domaを使用したUPDAT文は以下の操作でレコードを更新する。

①updateしたいレコードをselect(自動生成)でEntityクラスに全カラム取る (レコード数は1件)
②①で取得したEntityクラスの中でupdateしたいカラムのみ変更する
③変更後のEntityクラスをupdateの引数にわたして実行

この時、更新されていない項目もSETの項目には入っていて、同じ値で上書きすることになる。
しかし、@￰OriginalStatesの記述を最初のところに書いておけば、差分だけ更新してくれる。つまり、同じ値だからわざわざ更新する必要のない項目をSETの中には含めない。

2. Daoインターフェース(UserDao.java)

UserDao.java
@ConfigureAutowireable
@Dao
public interface UserDao {
    //ユーザーを一件取得する
    @Select
    Optional<User> selectById(Long Id); 

    //ユーザーを登録する
    @Insert
    int insert(User user);

    //ユーザーを更新する
    @Update
    int update(User user);

}

3. SQLテンプレート(select.sql)

select.sql
SELECT
 id
,password
,firstName
,lastName
FROM
 users

メモ ~ファイルの置き場所とファイル名~

src/main/resources/META-INF」の配下にDaoインターフェースと同じパッケージ構成になるように配置
ファイル名はDaoインターフェースに定義したメソッド名として、拡張子は.sqlとする