Академический Документы
Профессиональный Документы
Культура Документы
Aunque patentada productos cartogrficos como Hibernate y TopLink todava existen, ahora se centran en la prestacin de su funcionalidad a travs de la API de JPA, lo que permite que todas las aplicaciones sean portables a travs de JPA implementaciones. Esto dar a los usuarios refcard suficiente comprender los conceptos bsicos de la APP y empezar a escribir JPA aplicaciones. Cubre entidades, identificadores, O-R mappings, utilizando un gestor de entidades, crear y ejecutar consultas, y configuracin del archivo persistence.xml. MAPING DE UN OBJETO La unidad bsica de persistencia de JPA es la entidad, que es nada ms que una clase de Java con metadatos para describir cmo sus mapas del estado a las tablas de base de datos. metadatos puede estar en la forma de anotaciones en la clase de entidad s mismos, o puede ser un archivo XML adjunto, pero estamos usando anotaciones ya que son ms fciles de entender y especificar. Cada clase de entidad debe tener un marcador y una Entidad @ campo de identificador, indicado por @ Id, que se asigna a la primaria columna de clave en la base de datos. Cuando un campo contiene sencillo datos y mapas a una columna regular en la base de datos que lo llamamos un mapeo de base, por lo tanto un campo identificador es un tipo especial de base mapeo. Cuando una entidad tiene un campo que hace referencia a uno o ms otras entidades, que los mapas de campo a una columna de clave externa, y es denomina un campo de relacin. Aparte del campo de identificador, bsico asignaciones no deben ser anotados, pero debe relaciones especificar por su cardinalidad relacin. Normas incumplan en JPA significa que no es necesario especificar los nombres de tabla y nombres de columna que la entidad est asignado. si usted no est satisfecho con los valores por defecto JPA-asignado entonces se puede siempre les anular a travs de la utilizacin de la cartografa adicional metadatos. Por ejemplo, poniendo la Tabla @ en la clase de entidad usted puede hacer que el nombre de la tabla explcito, y anotando un campo de la cartografa bsica con @ Column se puede definir lo particular columna que asigna al Estado en ese campo. Asimismo @ JoinColumn se utiliza para alterar temporalmente el nombre de la columna de clave externa para referencias relacin. Un ejemplo de dos entidades mapeadas son la mascota y dueo clases que se muestran en los listados 1 y 2. Listado 1 - clase de entidad para mascotas
Listing 1 Pet entity class
@Entity
@Table(name="PET_INFO") public class Pet { @Id @Column(name="ID") int licenseNumber; String name; PetType type; @ManyToOne @JoinColumn(name="OWNER_ID") Owner owner; ... }
En un par relacin bidireccional, tal como la OneToMany @ Propietario en relacin a la mascota y la relacin ManyToOne @ de regreso de mascotas al propietario, slo una clave externa es necesaria una de las tablas para administrar ambos lados de la relacin. como Como regla general, el lado que no tiene la clave externa en lo especifica un atributo mappedBy en la relacin y anotacin especifica el campo en la entidad relacionada que asigna la clave externa. MAPEANDO UN OBJETO OBTENCIN DE UN GERENTE DE LA ENTIDAD La clase EntityManager es la API principal de JPA. Se utiliza para crear nuevas entidades, fabricar consultas para devolver conjuntos de las entidades existentes, se funden en el estado de forma remota modificada entidades, eliminar entidades de la base de datos, y ms. Existen, en general, dos tipos principales de entidad gerentes:
import javax.persistence.*; ... EntityManagerFactory emf = Persistence .createEntityManagerFactory("PetShop"); EntityManager em = emf.createEntityManager(); ... em.close();
En 4 Listado vemos como un contenedor de host estndar puede proporcionar una sencilla manera de obtener un gestor de entidades. La nica pega es que esto slo se admite en los componentes Java EE estndar (o contenedores que cumplen con el contrato contenedor APP), por lo que este ejemplo se utiliza un bean de sesin sin estado.
Listing 4 Injecting a managed entity manager
@Stateless public class MyBean implements MyInterface { @PersistenceContext(unitName="PetShop")
EntityManager em;
... }
La fusin () tambin se puede utilizar para crear entidades, pero es ms til para la fusin en la entidad los cambios realizados en el cliente. TRANSACCIONES Ya que acabamos de mencionar las transacciones, pero no las explican, ahora sera un buen momento para decir que APP es compatible con dos diferentes tipos de transacciones.
Transacciones JTA se ponen en marcha y comprometidos con la usual tcnicas de los contenedores, ya sea llamando a la API UserTransaction o haciendo uso de contenedores gestionados demarcacin de la transaccin en EJB o primavera. Por ejemplo, si los mtodos en el Listado 5 fueron en un bean sesin que tuvo un atributo de transaccin requerida establecer entonces la operacin se inici a principios y comprometido al final de cada llamada a mtodo cliente. Cuando se usan transacciones locales de la transaccin debe ser demarcadas manualmente mediante la invocacin de la EntityTransaction instancia se accede desde el gestor de la entidad. Cada uno de los tres mtodos en el Listado 5 que causaron la base de datos para cambiar lo hara
necesita tener begin y commit llamadas, como se muestra en el Listado 6 para el mtodo persist. Mtodos que slo leen desde la base de datos no es necesario que se producen dentro de una transaccin. CONSULTAS Las consultas dinmicas son objetos que se crean a partir de una entidad gerente, y luego ejecutado. Los criterios de consulta se especifican en el momento de la creacin como un lenguaje de consulta de Java Persistence (JP QL) cadena. Antes de ejecutar la consulta de un nmero de posibles llamadas de mtodo de configuracin se puede hacer en la instancia de la consulta para configurarlo. Listado 7 muestra un ejemplo de creacin y ejecutar una consulta que devuelve todas las instancias de mascotas, o los 100 primero si hay ms de 100 casos.
isting 7 Creating and executing a dynamic query
Query q = em.createQuery("SELECT p FROM Pet p"); q.setMaxResults(100); List results = q.getResultList(); Una consulta con nombre es una consulta que se define de forma esttica y luego instancias y ejecutado en tiempo de ejecucin. Se puede definir como un anotacin en la clase de entidad, asignndole un nombre que sea usa cuando la consulta se crea. El Listado 8 muestra una consulta con nombre definidos en la entidad de mascotas.
El ltimo identificador como prefijo con dos puntos (:) carcter para indicar que es un parmetro llamado que debe enlazarse en tiempo de ejecucin antes de la consulta puede ser ejecutado. Listado 9 muestra un mtodo que ejecuta la consulta por primera instancias de un objeto Query usando el mtodo de fbrica createNamedQuery (), entonces la unin pname el parmetro con nombre al nombre que se aprob en el mtodo, y finalmente ejecutar la consulta invocando getResultList ().
Listing 9 Executing a named query
public List findAllPetsByName(String petName) { Query q = em.createNamedQuery("Pet.findByName"); q.setParameter("pname", petName); return q.getResultList(); } JAVA PERSISTENCE QUERY LEGUAGE
La persistencia de Java Lenguaje de consulta es similar a SQL, pero funciona sobre las entidades y sus atributos persistentes asignada en lugar del esquema SQL. Muchas de las funciones de SQL y an palabras reservadas son compatibles con JP QL.
Hay tres tipos bsicos de JP QL estados, de los cuales el primero es monstruosamente los ms populares y tiles: selecciona a granel actualizaciones y borrados a granel.
1. select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause] 2. update_clause [where_clause] 3. delete_clause [where_clause]
Sin contar las asignaciones de la entidad a la base de datos tablas, en realidad slo hay una unidad de APP configuracin necesaria para conseguir su aplicacin en marcha. Se basa en la nocin de una unidad de persistencia, y se configura en un archivo llamado persistence.xml, que siempre debe ser colocado en el METAINF directorio de su unidad de despliegue. Cada unidad de persistencia es un configuracin de cierre sobre los ajustes necesarios para funcionar en el pertinente ambiente. El padre de familia elemento en un persistence.xmlfile es la persistencia elemento, y puede contener uno o ms unidad de persistencia elementos que representan ejecucin diferente configuraciones. Cada uno debe ser identificado con el obligatorio persistence-unit nombre del atributo. Hay requisitos ligeramente diferentes para configurar los unidad de persistencia, dependiendo de si va a implementar a un entorno contenedor administrado o una no administrada. en un contenedor administrado de la base de datos destino se indica a travs de el elemento jta-data-source, que es el nombre JNDI para el fuente de datos gestionados describir el estado en que se almacena entidad