JPA (Java Persistence API)
JPA puede utilizarse para crear versiones orientadas a objetos de entidades de bases de datos relacionales para que los desarrolladores las utilicen en sus aplicaciones.
Puede utilizar JPA para proporcionar anotaciones y extensiones XML que puede utilizar para describir tablas en su base de datos y su contenido, incluyendo tipos de datos, claves y relaciones entre tablas. Los desarrolladores pueden utilizar la API para realizar operaciones de base de datos en lugar de utilizar SQL.
CICS® soporta jpa-2.0, jpa-2.1, jpa-2.2, y persistence-3.0. Para obtener información sobre las diferencias entre estas versiones, consulte Java Persistence API (JPA) feature overview.
Entity objectsson simples clases Java, y pueden ser concretas o abstractas. Cada uno representa una fila en una tabla de base de datos, y las propiedades y campos se utilizan para mantener los estados. Cada campo se asigna a una columna de la tabla y se añade información clave sobre ese campo concreto; por ejemplo, puede especificar claves primarias o campos que no pueden ser nulos.@Entity @Table(name = "JPA") public class Employee implements Serializable { @Id @Column(name = "EMPNO") private Long EMPNO; @Column(name = "NAME", length = 8) private String NAME; private static final long serialVersionUID = 1L; public Employee() { super(); } public Long getEMPNO() { return this.EMPNO; } public void setEMPNO(Long EMPNO) { this.EMPNO = EMPNO; } public String getNAME() { return this.NAME; } public void setNAME(String NAME) { this.NAME = NAME; } }- El
EntityManagerFactoryse utiliza para generar unEntityManagerpara la unidad de persistencia.EntityManagermantiene la colección activa deentity objectsque utiliza una aplicación. Puede utilizar la claseEntityManagerpara inicializar las clases y crear una transacción para gestionar la integridad de los datos. A continuación, se interactúa con los datos mediante los métodos de la claseEntitygetyset, antes de utilizar la transacciónEntitypara consignar los datos.El siguiente ejemplo contiene código de muestra para insertar un registro:
@WebServlet("/Create") public class Create extends HttpServlet { private static final long serialVersionUID = 1L; @PersistenceUnit(unitName = "com.ibm.cics.test.wlp.jpa.annotation.cics.datasource") EntityManagerFactory emf; InitialContext ctx; /** * @throws NamingException * @see HttpServlet#HttpServlet() */ public Create() throws NamingException { super(); ctx = new InitialContext(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get the servlet parms String id = request.getParameter("id"); String name = request.getParameter("name"); // Create a new employee object Employee newEmp = new Employee(); newEmp.setEMPNO(Long.valueOf(id)); newEmp.setNAME(name); // Get the entity manager factory EntityManager em = emf.createEntityManager(); // Get a user transaction UserTransaction utx; try { // Start a user transaction and join the entity manager to it utx = (UserTransaction) ctx.lookup("java:comp/UserTransaction"); utx.begin(); em.joinTransaction(); // Persist the new employee em.persist(newEmp); // End the transaction utx.commit(); } catch(Exception e) { throw new ServletException(e); } response.getOutputStream().println("CREATE operation completed"); } } @PersistenceUnitexpresa una dependencia de unEntityManagerFactoryy su unidad de persistencia asociada. El nombre de la unidad de persistencia definido en el archivo persistence.xml. Para conectar las entidades y tablas a una base de datos, creamos un archivo persistence.xml en nuestro paquete. El archivo persistence.xml describe la base de datos a la que se conectan estas entidades. El archivo incluye información importante como el nombre del proveedor, las propias entidades, la URL conexión a la base de datos y los controladores.El siguiente ejemplo contiene una muestra persistence.xml :
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="com.ibm.cics.test.wlp.jpa.annotation.cics.datasource"> <jta-data-source>jdbc/jpaDataSource</jta-data-source> <class>com.ibm.cics.test.wlp.jpa.annotation.cics.datasource.entities.Employee</class> <properties> <property name="openjpa.LockTimeout" value="30000" /> <property name="openjpa.Log" value="none" /> <property name="openjpa.jdbc.UpdateManager" value="operation-order" /> </properties> </persistence-unit> </persistence>