1. Introducción
    1. ORM estandarizado
    2. Se integra con conceptos de frameworks de persistencia
    3. No requiere de un contenedor JavaEE
    4. Puede ser testeado en un ambiente JavaSE
    5. Define una interface para los proveedores
  2. Entity
    1. Diferencia con Session Beans
      1. Tienen identidad (Primary Key)
      2. Son persistentes, tienen estado
      3. No son remótamente accesibles
      4. Su ciclo de vida es independiente
    2. Entity Classes
      1. @Entity
      2. Es un POJO
        1. No extiende de ninguna clase o interface
        2. No requiere implementar Serializable
      3. Mapea a una tabla de base de datos
      4. Debe tener un Primary Key
      5. Acceso por getters y setters
      6. Puede tener métodos con lógica de negocio
      7. Características adicionales
        1. The class must have a public or protected, no-argument constructor. The class may have other constructors.
        2. The class must not be declared final. No methods or persistent instance variables must be declared final.
        3. If an entity instance be passed by value as a detached object, such as through a session bean's remote business interface, the class must implement the Serializable interface.
        4. Entities may extend both entity and non-entity classes, and non-entity classes may extend entity classes.
        5. Clients must access the entity's state through accessor or business methods.
    3. Persistent Fields and Properties
      1. Java primitive types
      2. java.lang.String
      3. Other serializable types including:
        1. Wrappers of Java primitive types
        2. java.math.BigInteger
        3. java.math.BigDecimal
        4. java.util.Date
        5. java.util.Calendar
        6. java.sql.Date
        7. java.sql.Time
        8. java.sql.TimeStamp
        9. User-defined serializable types
        10. byte[]
        11. Byte[]
        12. char[]
        13. Character[]
      4. Enumerated types
      5. Other entities and/or collections of entities
      6. Embeddable classes
    4. Primary Key
      1. Simple
        1. @Id
      2. Compuesto
        1. @EmbeddedId
        2. @IdClass
      3. Tipos
        1. Java primitive types
        2. Java primitive wrapper types
        3. java.lang.String
        4. java.util.Date (the temporal type should be DATE)
        5. java.sql.Date
        6. No usar tipos de punto flotante
    5. Multiplicidad
      1. @OneToOne
      2. @OneToMany
      3. @ManyToOne
      4. @ManyToMany
    6. Lifecycle
      1. @PrePersist
      2. @PostPersist
      3. @PreRemove
      4. @PostRemove
      5. @PreUpdate
      6. @PostUpdate
      7. @PostLoad
      8. Puede ser declarado en una clase Listener
        1. @EntityListeners
  3. EntityManager
    1. Asociado a un Persistence Context
    2. Tipos
      1. Container-Managed Entity Managers
        1. El Persistence Context se propaga automáticamente
        2. @PersistenceContext EntityManager em;
      2. Application-Managed Entity Managers
        1. El Persistence Context no se propaga
        2. El ciclo de vida del EntityManager es manejado por la app
        3. @PersistenceUnit EntityManagerFactory emf;
    3. Estados de Entity
      1. New
      2. Managed
      3. Detached
      4. Removed
  4. Despliegue
    1. Persistence units
      1. Agrupa
        1. Entity classes
        2. Mapping metadata
        3. Configuración de base de datos
      2. persistence.xml
        1. persistence
          1. persistence-unit
          2. description
          3. provider
          4. transaction-type
          5. JTA
          6. RESOURCE_LOCAL
          7. jta-data-source
          8. non-jta-datasource
          9. mapping-file
          10. jar-file
          11. excluded-unlisted-classes
          12. properties
  5. Acerca de
    1. Topic
    2. Topic