295 words

javax.persistence.Embeddable - JPA annotation

javax.persistence
Annotation Embeddable

Target:
Classes
Defines a class whose instances are stored as an intrinsic part of an owning entity and share the identity of the entity. Each of the persistent properties or fields of the embedded object is mapped to the database table for the entity.

Note that the Transient annotation may be used to designate the non-persistent state of an embeddable class.

Example 1:

    @Embeddable public class EmploymentPeriod { 
       @Temporal(DATE) java.util.Date startDate;
       @Temporal(DATE) java.util.Date endDate;
      ... 
    }

Example 2:

    @Embeddable public class PhoneNumber {
        protected String areaCode;
        protected String localNumber;
        @ManyToOne PhoneServiceProvider provider;
        ...
     }
 
    @Entity public class PhoneServiceProvider {
        @Id protected String name;
         ...
     }

Example 3:

    @Embeddable public class Address {
       protected String street;
       protected String city;
       protected String state;
       @Embedded protected Zipcode zipcode;
    }
 
    @Embeddable public class Zipcode {
       protected String zip;
       protected String plusFour;
     }

Since:
JPA 1.0
Learn how to define and use embeddable classes in Chapter 2 of the ObjectDB/JPA manual.
This annotation is a marker annotation (with no elements).

This documentation page is derived (with some adjustments) from the open source JPA 2 RI (EclipseLink)
and is available under the terms of the Eclipse Public License, v. 1.0 and Eclipse Distribution License, v. 1.0.
Object Relational Mapping (ORM) JPA 2 providers include Hibernate, EclipseLink, TopLink, OpenJPA and DataNucleus.
Object DB is not an ORM JPA implementation but an Object Database for Java with built in JPA 2 support.