Java Reference
In-Depth Information
Listing 9.16. Code-generated strategy
In this listing you see a few changes to the
User
class. First, the
@GeneratedValue
annotation is no longer being used. This is because the primary key isn't being auto-
matically generated anymore; you're instead generating the key yourself. Second, the
@PrePersist
annotation is introduced, which tells JPA to execute the
gener-
atePrimaryKey()
method before data is inserted into the database. And third, the JDK
UUID
object is used as a simple example of a primary-key generation strategy
.
We've finished covering the basics of getting data into and out of individual database tables
using JPA. Next, we'll look at the “relation” part of relational databases and see how JPA
handles building object trees from related database data across multiple tables.
9.4. Entity relationships
Referring back to
figure 9.3
,
the ActionBazaar domain model consists of a number of dif-
ferent entities that have relationships among them. Up until now, we've been concentrating
on how JPA stores and retrieves data for a single entity. But now we're going to look at
how JPA handles the relationships between entities. A relationship essentially means that
one entity holds an object reference to another. For example, the
Bid
object holds a refer-
ence to the
Item
object the bid was placed on. Therefore, a relationship exists between the
Bid
and
Item
domain objects. Recall that relationships can be either uni- or bidirection-
Bidder
object has a reference to
Bid
but the
Bid
object has no reference to the
Bid-
der
. The
Bid-Item
relationship, on the other hand, is bidirectional, meaning both the