: Dave Minter, Jeff Linwood
: Pro Hibernate 3
: Apress
: 9781430200420
: 1
: CHF 32.50
:
: Informatik
: English
: 264
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF
* First to market with complete Hibernate 3 coverage and real-world application design tips.

* Comprehensive reference for Hibernate object relational mapping strategies.

* Integrated approach to database and Java application design.



Dave Minter has adored computers since he was small enough to play in the boxes they came in. He built his first PC from discarded, faulty, and obsolete components, and considers that to be the foundation of his career as an integration consultant. Dave is based in London, where he helps large and small companies build systems that 'just work.' He co-authored Building Portals with the Java Portlet API and Pro Hibernate 3.
C H A P T E R 7

Querying Objects with Criteria (P. 131)

In this chapter, we are going to discuss retrieving objects from the database using Hibernate s criteria query API. Hibernate provides three different ways to retrieve data: the criteria query API, the Hibernate Query Language (HQL), and native SQL queries. The criteria query API provides a set of Java objects you can use to construct your queries. Hibernate provides its own object query language, HQL, which allows you to use SQL-like syntax to retrieve objects from the database. Lastly, Hibernate provides an API for using SQL directly against the database, which allows you to use database-specific SQL that Hibernate does not support.

We discuss criteria in this chapter in Chapter 8 we will cover HQL and SQL queries. The criteria query API lets you build nested, structured query expressions in Java, providing a compile-time syntax checking that is not possible with a query language like HQL or SQL. The criteria query API also includes Query By Example (QBE) functionality for supplying example objects that contain the properties you would like to retrieve.

In Hibernate 3, the criteria query API also includes projection and aggregation methods, including count. In Hibernate 2, you had to download a patch to the criteria query API to enable row counting.

Using the Criteria Query API

The easiest way to retrieve data with Hibernate is to use the criteria query API. Instead of writing an SQL SELECT statement or an HQL statement, you can build up a query programmatically. You can also use QBE to retrieve objects that match an object that you have partially populated (we will discuss QBE in more detail further on in the chapter). The org.hibernate. Criteria interface defines the available methods for one of these criteria query objects.

The Hibernate Session interface contains several createCriteria() methods. Pass the persistent object s class or its entity name to the createCriteria() method, and Hibernate will create a Criteria object that returns instances of the persistence object s class when your application executes a criteria query.

The simplest example of a criteria query is one with no optional parameters or restrictions the criteria query will simply return every object that corresponds to the class. We will illustrate this criteria with an example, but we wanted to first introduce the sample application we are using in this chapter, and the next chapter on HQL. The sample application has three classes: Supplier, Product, and Software. The Supplier class (see Listing 7-1) has a name property and a List collection of Product objects.

Listing 7-1. The Supplier Class

package com.hibernatebook.criteria,

import java.util.ArrayList,

import java.util.List,

public class Supplier

{

private int id,

private String name,

private List products = new ArrayList(),

public int getId()

{

return id,

}

public void setId(int id)

{
Contents at a Glance5
Contents7
About the Authors13
About the Technical Reviewer15
Acknowledgments17
Introduction19
Part 1 Hibernate 3 Primer23
1 An Introduction to Hibernate 324
2 Integrating and Configuring Hibernate34
3 Building a Simple Application48
4 Using Annotations with Hibernate86
Part 2 Hibernate 3 Reference104
5 The Persistence Lifecycle106
6 Creating Mappings114
7 Querying Objects with Criteria152
8 Querying with HQL and SQL166
9 Using the Session180
10 Design Considerations with Hibernate 3196
11 Events and Interceptors210
12 Hibernate Filters224
13 Fitting Hibernate into the Existing Environment234
14 Upgrading from Hibernate 2244
Index250