The @Entity
annotation indicates that the JavaBean is a persistent entity. By default the class name will be used for
the Hibernate entity name as this class is registered with Hibernate. A different entity name could be specified
by using the annotations name attribute (ex: @Entity(name="Employee")
).
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")
).
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.
Example 1. Excerpt from Person
@Entity @Table(name="PERSON") public class Person { 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) @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 { private Integer id = null; private String address = null; private String city = null; private String state = null; private String zipPostal = 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 date created. */ public Date getCreated() { return created; } /** * Sets date created. */ public void setCreated(Date created) { this.created = created; } ... }