<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
	<properties>
		<title>削除</title>
	</properties>
	<body>
		<section name="目次">
			<ul>
				<li><a href="#概要">概要</a></li>
				<li><a href="#SQLの自動生成による削除">SQLの自動生成による削除</a></li>
				<li><a href="#SQLファイルによる削除">SQLファイルによる削除</a></li>
			</ul>
		</section>
		<section name="概要">
			<p>
				SQLはすべてバインド変数（?）を使った準備された文に変換されて実行されますが、
				このドキュメントでは、発行されたSQLがどのようなものかわかりやすくするためにバインド変数を実際の値に置き換えたログ用のSQLを示します。
			</p>
		</section>
		<section name="SQLの自動生成による削除">
			<p>
				<a href="https://www.seasar.org/svn/doma/trunk/doma-tutorial/src/test/java/tutorial/DeleteTest.java">src/test/java/tutorial/DeleteTest.java</a>のtestDeleteメソッドを参照してください。
				SQLの自動生成による削除です。
			</p>
			<p>
				使用するDaoのメソッド定義は次のとおりです。
			</p>
<source><![CDATA[@Delete
int delete(Employee employee);]]></source>
			<p>
				Daoのメソッドは次のように呼び出します。
			</p>
<source><![CDATA[Employee employee = dao.selectById(1);

dao.delete(employee);]]></source>
			<p>
				SQLのログは次のように出力されます（改行しています）。
			</p>
<source><![CDATA[delete 
from 
  Employee 
where 
  id = 1 
  and 
  VERSION = 1]]></source>
			<p>
				@Versionが注釈されたversionプロパティに対応するカラムは検索条件に含まれます。
			</p>
		</section>
		<section name="SQLファイルによる削除">
			<p>
				<a href="https://www.seasar.org/svn/doma/trunk/doma-tutorial/src/test/java/tutorial/DeleteTest.java">src/test/java/tutorial/DeleteTest.java</a>のtestDeleteWithSqlFileメソッドを参照してください。
				SQLファイルによる削除です。
			</p>
			<p>
				使用するDaoのメソッド定義は次のとおりです。
				@DeleteのsqlFile要素にtrueを指定します。
			</p>
<source><![CDATA[@Delete(sqlFile = true)
int deleteWithSqlFile(Employee employee);]]></source>
			<p>
				Daoのメソッドに対応するSQLファイルのパスはMETA-INF/tutorial/dao/EmployeeDao/deleteWithSqlFile.sqlです。
				SQLファイルには次のように記述されています。
			</p>
<source><![CDATA[delete
from 
  Employee
where
  ID = /* employee.id */0]]></source>
			<p>
				Daoのメソッドは次のように呼び出します。
			</p>
<source><![CDATA[Employee employee = dao.selectById(1);

dao.delete(employee);]]></source>
			<p>
				SQLのログは次のように出力されます。
			</p>
<source><![CDATA[delete
from 
  Employee
where
  ID = 1]]></source>
			<p>
				SQLファイルによる削除では、エンティティリスナーは呼び出されません。
			</p>
		</section>
	</body>
</document>