insert、update、そしてdelete

select以外の、残るinsert、update、deleteを試してみる。
select以外はメソッドに命名規約がある。それに従えば、あとはselectと同じようにDAOのinterfaceにメソッドを定義すればいい。BookDaoにadd、modify、deleteのメソッドを追加するとこんな感じ。

package examples.s2dao.book.dao;

import java.util.List;

import examples.s2dao.book.entity.Book;


public interface BookDao {
    public static final Class BEAN = Book.class;
    
    public static final String getBook_QUERY = "BOOK.id = ?";
    public Book getBook(int id);
    
    public List getAllBooks();
    
    public void addBook(Book book);
    
    public void modifyBook(Book book);
    
    public void deleteBook(Book book);
}

これだけ。それぞれBookオブジェクトを受け取り、該当するレコードが処理されるといったイメージ。
ここで、insertの場合ちょっと注意しないといけない。Bookクラスが指すBOOKテーブルでは、主キーにIDENTITYを指定してSEQUENCEを使うようにしている。そのため、Entity(Bean)にIDアノテーションを記述してSEQUENCEの値を使うように指定する必要がある。BookクラスにIDアノテーションを記述するとこんな感じ。

public class Book implements Serializable {
    public static final String id_ID="sequence, sequenceName=SEQ_BOOK_ID";
    
    private int id;
    :
    :
    
    public void setId(int id) {
        this.id = id;
    }
    
    public int getId() {
        return id;
    }
    :
    :

idプロパティがSEQ_BOOK_IDというSEQUENCEを使うという意味になる。
実際にinsertされたSEQUENCEの値はこのidプロパティにセットされる。つまり、addBook()に渡したBookオブジェクトのgetId()を呼ぶと、その値が取得できることになる。