Example 1. Excerpt from Person
The @Entity
annotation indicates that the JavaBean is a persistent entity. JPA would automatically
pick up this class except the JPA configuration explicitly registers the classes each persistence unit should handle.
The @Table
annotation indicates the table the class should be mapped to. If the property name matches the field name, a specific mapping doesn't need to be set
(like for the id column). The first name column needs to be explicitly set using the @Column
annotation (ex: @Column(name="FIRST_NAME")
) so
it maps to the database field FIRST_NAME.
The one-to-many relationship from Person
to Address
is configured on public Set<Address> getAddresses()
.
The @OneToMany(fetch=FetchType.EAGER)
annotation indicates a one-to-many relationship and that any associated addresses should be eagerly fetched.
The @JoinColumn(name="PERSON_ID", nullable=false)
annotation indicates ADDRESS.PERSON_ID
is
the column to match against PERSON.ID
to retrieve addresses associated with a person.
@Entity @Table(name="PERSON") public class Person implements Serializable { private static final long serialVersionUID = -8712872385957386182L; private Integer id = null; private String firstName = null; private String lastName = null; private Set<Address> addresses = null; private Date created = null; /** * Gets id (primary key). */ @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } /** * Sets id (primary key). */ public void setId(Integer id) { this.id = id; } /** * Gets first name. */ @Column(name = "FIRST_NAME") public String getFirstName() { return firstName; } /** * Sets first name. */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * Gets last name. */ @Column(name = "LAST_NAME") public String getLastName() { return lastName; } /** * Sets last name. */ public void setLastName(String lastName) { this.lastName = lastName; } /** * Gets list of <code>Address</code>es. */ @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "PERSON_ID", nullable = false) public Set<Address> getAddresses() { return addresses; } /** * Sets list of <code>Address</code>es. */ public void setAddresses(Set<Address> addresses) { this.addresses = addresses; } /** * Gets date created. */ public Date getCreated() { return created; } /** * Sets date created. */ public void setCreated(Date created) { this.created = created; } ... }
Example 2. Excerpt from Address
@Entity @Table(name="ADDRESS") public class Address implements Serializable { private static final long serialVersionUID = 7851794269407495684L; private Integer id = null; private String address = null; private String city = null; private String state = null; private String zipPostal = null; private String country = null; private Date created = null; /** * Gets id (primary key). */ @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } /** * Sets id (primary key). */ public void setId(Integer id) { this.id = id; } /** * Gets address. */ public String getAddress() { return address; } /** * Sets address. */ public void setAddress(String address) { this.address = address; } /** * Gets city. */ public String getCity() { return city; } /** * Sets city. */ public void setCity(String city) { this.city = city; } /** * Gets state. */ public String getState() { return state; } /** * Sets state. */ public void setState(String state) { this.state = state; } /** * Gets zip or postal code. */ @Column(name = "ZIP_POSTAL") public String getZipPostal() { return zipPostal; } /** * Sets zip or postal code. */ public void setZipPostal(String zipPostal) { this.zipPostal = zipPostal; } /** * Gets country. */ public String getCountry() { return country; } /** * Sets country. */ public void setCountry(String country) { this.country = country; } /** * Gets date created. */ public Date getCreated() { return created; } /** * Sets date created. */ public void setCreated(Date created) { this.created = created; } ... }