net.java.ao.Preloadの日本語訳
ActiveObjectsのnet.java.ao.Preloadアノテーションの日本語訳です。原文は、https://activeobjects.dev.java.net/api/net/java/ao/Preload.htmlです。
以下、日本語訳
net.java.ao Annotation Type Preload
@Retention(value=RUNTIME) @Target(value=TYPE) public @interface Preload
列取得クエリのSELECT句に常に含めるフィールドを指定します。エンティティを取得する度に必ずアクセスする列がある場合、その列はプリロードの対象として最も有力です。例えば:
Specifies a list of fields which should be appended to the SELECT clause every time a row of the type in question is retrieved. If the developer knows that every time an entity of a certain type is retrieved, certain fields will be accessed, this is a prime candidate for preloading. For example:
@Preload("name") public interface Person extends Entity { public String getName(); public void setName(String name); // ... } // ... manager.find(Person.class, "age > 12");
このコードは、以下のようなクエリを実行します。
This code will run a query something like the following:
SELECT id,name FROM people WHERE age > 12
複数のフィールドを並べてを指定することもできます。
A list of fields may also be specified:
@Preload({"firstName", "lastName"}) public interface Person extends Entity { public String getFirstName(); public void setFirstName(String firstName); public String getLastName(); public void setLastName(String lastName); // ... } // ... manager.find(Person.class, "age > 12");
これは、以下のようなクエリを生成します:
This produces a query like the following:
SELECT id,firstName,lastName FROM people WHERE age > 12
*を指定すると、クエリは常にすべての列を読み込みます。そういうわけで、@Prelaodとは、ActiveObjectsの基礎である遅延ロードを上書きする主要なメカニズムです。
* may also be specified to force queries to load all fields. As such, @Preload is the primary mechanism provided by ActiveObjects to override its lazy-loading underpinnings.
このフラグはヒントです. 実行時に@Preloadの値を無視するクエリあります(例えば、EntityManager.findWithSQL(Class, String, String, Object...)によって実行されるクエリ)。
This flag is a hint. There are still queries (such as those executed by EntityManager.findWithSQL(Class, String, String, Object...)) which will ignore the @Preload values and simply execute a vanilla query.
作成者 - Author: Daniel Spiewak 関連項目 - See Also: value()