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()を呼ぶと、その値が取得できることになる。