124 CHAPTER 6 n MAPPING WITH ANNOTATIONS CHAPTER (Web hosting providers)
124 CHAPTER 6 n MAPPING WITH ANNOTATIONS CHAPTER 6 n MAPPING WITH ANNOTATIONS Named Queries (HQL or EJB QL) @NamedQuery and @NamedQueriesallow one or more EJB QL queries to be associated with an entity. The required attributes are as follows: name is the name by which the query is retrieved. query is the EJB QL (or HQL) query associated with the name. Listing 6-29 shows an example associating a named query with the Author entity. The query would retrieve Author entities by name, so it is natural to associate it with that entity however, there is no actual requirement that a named query be associated in this way with the entity that it concerns. Listing 6-29. An EJB QL Named Query Annotation @Entity @NamedQuery( name=”findAuthorsByName”, query=”from Author where name = :author” ) public class Author { … } There is also a hints attribute, taking a QueryHint annotation name/value pair, which allows caching mode, timeout value, and a variety of other platform-specific tweaks to be applied (this can also be used to comment the SQL generated by the query). You do not need to directly associate the query with the entity against which it is declared, but it is normal to do so. If a query has no natural association with any of the entity declarations, it is possible to make the @NamedQueryannotation at the package level. There is no natural place to put a package-level annotation, so Java annotations allow for a specific file, called package-info.java, to contain them. Listing 6-30 gives an example of this. Listing 6-30. A package-info.java File @javax.annotations.NamedQuery( name=”findAuthorsByName”, query=”from Author where name = :author” ) package com.hibernatebook.annotations; Hibernate s session allows named queries to be accessed directly, as shown in Listing 6-31. Listing 6-31. Invoking a Named Query via the Session Query query = session.getNamedQuery(”findAuthorsByName”); query.setParameter(”author”, “Dave”); List booksByDave = query.list(); System.out.println(”There is/are ” + booksByDave.size() + ” author(s) called Dave in the catalog”);
Note: If you are looking for high quality webhost to host and run your jsp application check Vision florida web design services