概要
SQLはすべてバインド変数(?)を使った準備された文に変換されて実行されますが、 このドキュメントでは、発行されたSQLがどのようなものかわかりやすくするためにバインド変数を実際の値に置き換えたログ用のSQLを示します。
SQLの自動生成による削除
src/test/java/tutorial/DeleteTest.javaのtestDeleteメソッドを参照してください。 SQLの自動生成による削除です。
使用するDaoのメソッド定義は次のとおりです。
@Delete int delete(Employee employee);
Daoのメソッドは次のように呼び出します。
Employee employee = dao.selectById(1); dao.delete(employee);
SQLのログは次のように出力されます(改行しています)。
delete from Employee where id = 1 and VERSION = 1
@Versionが注釈されたversionプロパティに対応するカラムは検索条件に含まれます。
SQLファイルによる削除
src/test/java/tutorial/DeleteTest.javaのtestDeleteWithSqlFileメソッドを参照してください。 SQLファイルによる削除です。
使用するDaoのメソッド定義は次のとおりです。 @DeleteのsqlFile要素にtrueを指定します。
@Delete(sqlFile = true) int deleteWithSqlFile(Employee employee);
Daoのメソッドに対応するSQLファイルのパスはMETA-INF/tutorial/dao/EmployeeDao/deleteWithSqlFile.sqlです。 SQLファイルには次のように記述されています。
delete from Employee where ID = /* employee.id */0
Daoのメソッドは次のように呼び出します。
Employee employee = dao.selectById(1); dao.delete(employee);
SQLのログは次のように出力されます。
delete from Employee where ID = 1
SQLファイルによる削除では、エンティティリスナーは呼び出されません。