SlideShare una empresa de Scribd logo
2
Lo más leído
5
Lo más leído
9
Lo más leído
TUTORIAL JPA
RECORDEMOS EL OBJETIVO DEL EXAMEN FINAL
HACER VARIAS APLIACIONES O UNA APLAICION CON VARIOS MODULOS
Y CADA MODULO QUE GESTIONE LOS EMPLEADOS DE UN DEPARTAMENTO

La primera Opcion Collecciones y persistencia no usara bases de datos pero si persistencia de
Objetos
JPA usara el patrón de diseño Modelo Vista Control
DAO usara el patrón de diseño Data Access Objects y asi sucesivamente APEX Y ZATHURA Son
soluciones web.
En este Capitulo se dará un tutorial para Crear la aplicación
con bases de datos y JPA
Objetivo:
Crear un aplicación con las funcionalidades básicas para el el CRUD de las tablas Departamento y
Empleado. Usando la Persistencia JPA de JAVA (java Persistency Api)
El Scrip SQL para crear la base de datos Crea.SQL se anexa
En la primera parte se hara el CRUD para la tabla departamentos
INSTRUCCIONES

y debe tener los tres packages MODELO VISTA CONTROL
Incluya (copia) en el package Control las librerías de Oracle en mi caso ojdbc6.jar
Y adicione las librerías al proyecto

De click derecho sobre Libraries y elija Add JAR/Folder
Y busque el archivo jar y adicionelo.

De click derecho sobre MODELO y elija “Entity Classes fron database”
Elija la conneccion de Oracle si no esta debe crearla

Elija la Tablas Departamentos y presione next
Presione next /next y finish sin cambiar las opciones
El proyecto aparece ahora asi:

Se genero la unidad de persistencia (archivo xml) y la entidad (entity) Departamentos
Los cuales tienen esta presentación
Y este código XML

Donde el nombre mas imporante esta encerradon en le circulo en rojo EXFINALPROJPAPU
DepartamentosJpaController

Sobre CONTROL de Boton derecho del mouse y de new y elija
JPA Controller Classes fron Entity Classes como se muestra

Elija MODELO.Departamentos

Y presione next y luego Finish

Se genera
Y en esta clase se tienen todos estos métodos

Que permiten crear, modificar, eliminar departemntos y hacer algunas consutlas de información
Lo importante aquí es que las instrucciones para ahcer esto ya están inlcuidas y todos los procesos
con las base de datos
HAGAMOS UNA PRUEBA

Haga Un programa (class ) PruebaJPA1
Y meta este main

public static void main(String[] a) throws Exception {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
em.getTransaction().begin();
Integer codigodepto=13;
String nombredepto="RRHH";
Departamentos dep = new Departamentos();
dep.setCodigodepto(codigodepto);
dep.setNombredepto(nombredepto);
service.create(dep);
em.getTransaction().commit();
System.out.println("Persisted " + dep);
em.close();
emf.close();

Ejecutele

Debe salir

Y en la base de datos debe quedar creado el Departamento 13

RRHH
Bueno ya estamos listos para trabajar una interface Visual GUI para Departamentos

Cree esta ventana con un JDialog
Para poner funcionalidad (lógica ) al botón add
Dele doble click al botón add
Y digite este código

String scodigo="";
String nombre ="";
scodigo = jTextField1.getText();
nombre = jTextField2.getText();
if(DepartamentosTrBD.adicionar(scodigo, nombre)){
javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO ADICIONADO");
}
else{
javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ADICIONAR");
}

Observe la clase resaltada no ha sido creada ni por JPA ni por las clases o código que hemos
introducido por tanto hay que crearla . esto se hace para que la ventana quede mas limpia de
código y las operaciones sean realziadas por clases en el Control
La clase DepartamentosTrBD se crea (en el package CONTROL) y se digita el código para el
método adicionar asi:
import MODELO.Departamentos;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
*
* @author wdiaz
*/
public class DepartamentosTrBD {
public static boolean adicionar(String scodigo, String nombre) {
boolean r=true;
int icodigo=Integer.parseInt(scodigo);
Integer codigo =icodigo;
Departamentos dep= new Departamentos();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
em.getTransaction().begin();
dep.setCodigodepto(codigo);
dep.setNombredepto(nombre);
try{
service.create(dep);
em.getTransaction().commit();
}catch(Exception e){
System.out.println(e);
em.getTransaction().rollback();
r=false;
return r;
}
System.out.println("Persisted " + dep);
em.close();
emf.close();
return r;
}

Puede probar ejecutar adicionando un nuevo departamento . Haremos el código para buscar mas
adelante pero puede verificar si lo adiciono con SELECT * FROM DEPARTAMENTOS en Oracle
De igual manera incluya para cada botón este código

Boton modify
String scodigo="";
String nombre ="";
scodigo = jTextField1.getText();
nombre = jTextField2.getText();
if(DepartamentosTrBD.modificar(scodigo, nombre)){
javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO MODICADO");
}
else{
javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO MODIFICAR");
}
Boton delete
String scodigo="";
scodigo = jTextField1.getText();
if(DepartamentosTrBD.eliminar(scodigo)){
javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO ELIMINADO CON EXITO");
}
else{
javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ELIMINAR");
}

Boton buscar

String scodigo="";
scodigo = jTextField1.getText();
int icodigo=Integer.parseInt(scodigo);
Departamentos dep=DepartamentosTrBD.getDepartamento(icodigo);
if(dep!=null){
jTextField2.setText(dep.getNombredepto());
}
else{
javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ENCONTRAR");
}
Y la clase DepartamentosTrBD completa queda (en le package CONTROL)

import MODELO.Departamentos;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
/**
*
* @author wdiaz
*/
public class DepartamentosTrBD {
public static boolean adicionar(String scodigo, String nombre) {
boolean r=true;
int icodigo=Integer.parseInt(scodigo);
Integer codigo =icodigo;
Departamentos dep= new Departamentos();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
em.getTransaction().begin();
dep.setCodigodepto(codigo);
dep.setNombredepto(nombre);
try{
service.create(dep);
em.getTransaction().commit();
}catch(Exception e){
System.out.println(e);
em.getTransaction().rollback();
r=false;
return r;
}
System.out.println("Persisted " + dep);
em.close();
emf.close();
return r;
}
public static boolean modificar(String scodigo, String nombre) {
boolean r=true;
int icodigo=Integer.parseInt(scodigo);
Integer codigo =icodigo;
Departamentos dep= new Departamentos();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
em.getTransaction().begin();
dep.setCodigodepto(codigo);
dep.setNombredepto(nombre);
try{
service.edit(dep);
em.getTransaction().commit();
}catch(Exception e){
System.out.println(e);
em.getTransaction().rollback();
r=false;
return r;
}
System.out.println("modificado " + dep);
em.close();
emf.close();
return r;
}
public static boolean eliminar(String scodigo) {
boolean r=true;
int icodigo=Integer.parseInt(scodigo);
Integer codigo =icodigo;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
em.getTransaction().begin();
try{
service.destroy(codigo);
em.getTransaction().commit();
}catch(Exception e){
System.out.println(e);
em.getTransaction().rollback();
r=false;
return r;
}
System.out.println("modificado " + codigo);
em.close();
emf.close();
return r;
}
public static Departamentos getDepartamento(int icodigo){
Integer codigo=icodigo;
Departamentos dep= new Departamentos();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU");
EntityManager em = emf.createEntityManager();
DepartamentosJpaController service = new DepartamentosJpaController (emf);
dep = em.find(Departamentos.class, codigo);
em.close();
emf.close();
return dep;
}
}

Pregunta será posible hacer la lógica (código) para los botones first, previous, next y last?
Algunas ideas al respecto
En la segunda parte se hará el CRUD para la tabla EMPLEADOS teniendo en cuenta que existe una
relación 1-n entre Departamentos y Empleados.

ANEXO 1 : SCRIP SQL para crear la base de datos

DROP TABLE EMPLEADOS;
DROP TABLE DEPARTAMENTOS;
CREATE TABLE departamentos (
codigodepto NUMBER(5) NOT NULL,
NOMBREDEPTO VARCHAR2(25) NOT NULL,
CONSTRAINT PK_departamentos PRIMARY KEY (codigodepto)
)
;
CREATE TABLE EMPLEADOS (
CODIGOEMP NUMBER(5) NOT NULL,
APELLIDO VARCHAR2(40) NOT NULL,
NOMBRE VARCHAR2(40) NOT NULL,
SEXO CHAR(1) NOT NULL,
EMAIL VARCHAR2(80) NOT NULL,
SALARIO NUMBER(12,2) NOT NULL,
codigodepto NUMBER(5) NOT NULL,
CONSTRAINT PK_EMPLEADOS PRIMARY KEY (CODIGOEMP)
)
;
ALTER TABLE EMPLEADOS
ADD CONSTRAINT FK_EMPLEADOS_departamentos
FOREIGN KEY (codigodepto) REFERENCES departamentos (codigodepto)
;
Se aconseja hacer algunos insert para tener dos o tres registros
en cada tabla
INSERT INTO
departamentos VALUES(10,'sistemas');
INSERT INTO
departamentos VALUES(11,'finanzas');
INSERT INTO
EMPLEADOS
VALUES(1,'GRISALES','AMPARO','F','amparito@gmail.com',5000.0,11);
ANEXO 2 EN CASO QUE DEBA CREAR LA CONNECCION DESDE CEROS

Al elegir esta opción se muestra este dialogo para crar una conexión con la base de datos
Si la coneccion no esta ustede puede crearla eligiendo NEW DATABASE CONECCTION

ELIJA NEW DATABSE CONNECTION
LUEGO ELIJA Oracle Thin en la caja desplegable de drivers

Y ESCOJA
Digite luego el User Name y el pasword y presione Test Connection
Y si todo esta bien presiones Finish

Más contenido relacionado

PDF
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
DOCX
Diagrama de actividades inscripcion, evaluacion, Asistencia
PPTX
Proyecto Final Base De Datos
PDF
22 ejercicios base de datos
PPTX
Vistas Arquitectonicas Ingenieria de Software
PPTX
Arquitectura flujo de datos(filtros y tuberías)
PPTX
Importancia de la implementación de las listas para la estructura de datos
PDF
NoSQL: Introducción a las Bases de Datos no estructuradas
Proyecto Final de Carrera. Ing.Informática. HELP-DESK
Diagrama de actividades inscripcion, evaluacion, Asistencia
Proyecto Final Base De Datos
22 ejercicios base de datos
Vistas Arquitectonicas Ingenieria de Software
Arquitectura flujo de datos(filtros y tuberías)
Importancia de la implementación de las listas para la estructura de datos
NoSQL: Introducción a las Bases de Datos no estructuradas

La actualidad más candente (20)

PPT
Diagrama de contexto
PPT
Unidad 5 TransformacióN Er A Relacional NormalizacióN
PPSX
Modelo Entidad Relación
PPTX
Patrón de diseño Modelo-Vista-Controlador (MVC)
PPTX
Arquitectura Multinivel
PPTX
Csv y xml
DOCX
1. modelo entidad relacion ejemplo
PPTX
Diagramas UML (Diseño de Sistemas)
PPTX
Conversion de infija a postfija
DOCX
Guía de ejercicios de normalizacion
PPT
Diagramas de colaboracion
PPSX
Patrones de diseño(presentación 7)
PPTX
UML - Casos de Uso y Diagramas de Clase
PPTX
Conclusiones sobre base de datos
DOCX
Ejemplos acid
PDF
Modelo entidad relación BD Matriculas
PPT
Diseño de bases de datos
PPTX
Modelo relacional y reglas de integridad
PPTX
NoSQL bases de datos no relacionales
Diagrama de contexto
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Modelo Entidad Relación
Patrón de diseño Modelo-Vista-Controlador (MVC)
Arquitectura Multinivel
Csv y xml
1. modelo entidad relacion ejemplo
Diagramas UML (Diseño de Sistemas)
Conversion de infija a postfija
Guía de ejercicios de normalizacion
Diagramas de colaboracion
Patrones de diseño(presentación 7)
UML - Casos de Uso y Diagramas de Clase
Conclusiones sobre base de datos
Ejemplos acid
Modelo entidad relación BD Matriculas
Diseño de bases de datos
Modelo relacional y reglas de integridad
NoSQL bases de datos no relacionales
Publicidad

Destacado (20)

PPT
JPA en Netbeans
PDF
Tutorial de jpa para windows usando net beans y mysql parte 1
DOCX
Tutorial de persistencia en java con postgresql
DOCX
Metodologia para resolver problemas con Programacion orientada a Objetos
PPSX
ConexióN A Base De Datos En Netbeans
PPSX
Java Persistence Api (Jpa)
PDF
Guia BD conexión Mysql con Java usando Netbeans
PDF
Persistência com JPA usando o NetBeans 7
PDF
Base de datos con Netbeans
DOCX
Manual Netbeans Bases Datos2
PDF
Persistencia de datos en Java
PDF
EJB con Eclipse y JBoss
PDF
Conexion del jpa con mysql
PDF
Manual Jboss Server,Creación de Proyecto en Eclipse
PPT
Introdução a JPA e Hibernate - TDC 2012
PDF
Bases de datos nosql
PDF
Reportes con crystal reports en asp.net
PPSX
CONEXION A BASE DE DATOS DESDE NETBEANS
JPA en Netbeans
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de persistencia en java con postgresql
Metodologia para resolver problemas con Programacion orientada a Objetos
ConexióN A Base De Datos En Netbeans
Java Persistence Api (Jpa)
Guia BD conexión Mysql con Java usando Netbeans
Persistência com JPA usando o NetBeans 7
Base de datos con Netbeans
Manual Netbeans Bases Datos2
Persistencia de datos en Java
EJB con Eclipse y JBoss
Conexion del jpa con mysql
Manual Jboss Server,Creación de Proyecto en Eclipse
Introdução a JPA e Hibernate - TDC 2012
Bases de datos nosql
Reportes con crystal reports en asp.net
CONEXION A BASE DE DATOS DESDE NETBEANS
Publicidad

Similar a Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS (20)

PPT
JPA en NetBeans
ODP
Introducción a Java Persistence API
DOCX
Tutorial de persistencia de java
PDF
[ES] Manejadores de persistencia
PDF
Manualjpa
PDF
Manualjpa
PPT
PDF
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5
PPT
Persistence
PPSX
Persistencia De Objetos(Hibernate)
ODT
PPSX
Persistencia de objetos con Hibernate
PDF
Aplication
PPTX
P2C2 Introducción a JEE5
PDF
Bases de Datos en Java - Intro a Hibernate
PDF
Ejemplo Base de Datos SQLite (Android)
PPT
feedback
PDF
PDF
Ejemplo bbdd sqlite (android)
JPA en NetBeans
Introducción a Java Persistence API
Tutorial de persistencia de java
[ES] Manejadores de persistencia
Manualjpa
Manualjpa
Adf Rich Faces Toplink Jpa Oracle Xe Jee 5
Persistence
Persistencia De Objetos(Hibernate)
Persistencia de objetos con Hibernate
Aplication
P2C2 Introducción a JEE5
Bases de Datos en Java - Intro a Hibernate
Ejemplo Base de Datos SQLite (Android)
feedback
Ejemplo bbdd sqlite (android)

Último (20)

PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Metodologías Activas con herramientas IAG
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
Híper Mega Repaso Histológico Bloque 3.pdf
biología es un libro sobre casi todo el tema de biología
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
2 GRADO UNIDAD 5 - 2025.docx para primaria
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
Punto Critico - Brian Tracy Ccesa007.pdf
Metodologías Activas con herramientas IAG
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf

Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS

  • 1. TUTORIAL JPA RECORDEMOS EL OBJETIVO DEL EXAMEN FINAL HACER VARIAS APLIACIONES O UNA APLAICION CON VARIOS MODULOS Y CADA MODULO QUE GESTIONE LOS EMPLEADOS DE UN DEPARTAMENTO La primera Opcion Collecciones y persistencia no usara bases de datos pero si persistencia de Objetos JPA usara el patrón de diseño Modelo Vista Control DAO usara el patrón de diseño Data Access Objects y asi sucesivamente APEX Y ZATHURA Son soluciones web. En este Capitulo se dará un tutorial para Crear la aplicación con bases de datos y JPA Objetivo: Crear un aplicación con las funcionalidades básicas para el el CRUD de las tablas Departamento y Empleado. Usando la Persistencia JPA de JAVA (java Persistency Api) El Scrip SQL para crear la base de datos Crea.SQL se anexa
  • 2. En la primera parte se hara el CRUD para la tabla departamentos INSTRUCCIONES y debe tener los tres packages MODELO VISTA CONTROL Incluya (copia) en el package Control las librerías de Oracle en mi caso ojdbc6.jar Y adicione las librerías al proyecto De click derecho sobre Libraries y elija Add JAR/Folder Y busque el archivo jar y adicionelo. De click derecho sobre MODELO y elija “Entity Classes fron database”
  • 3. Elija la conneccion de Oracle si no esta debe crearla Elija la Tablas Departamentos y presione next
  • 4. Presione next /next y finish sin cambiar las opciones El proyecto aparece ahora asi: Se genero la unidad de persistencia (archivo xml) y la entidad (entity) Departamentos Los cuales tienen esta presentación
  • 5. Y este código XML Donde el nombre mas imporante esta encerradon en le circulo en rojo EXFINALPROJPAPU
  • 6. DepartamentosJpaController Sobre CONTROL de Boton derecho del mouse y de new y elija JPA Controller Classes fron Entity Classes como se muestra Elija MODELO.Departamentos Y presione next y luego Finish Se genera
  • 7. Y en esta clase se tienen todos estos métodos Que permiten crear, modificar, eliminar departemntos y hacer algunas consutlas de información Lo importante aquí es que las instrucciones para ahcer esto ya están inlcuidas y todos los procesos con las base de datos HAGAMOS UNA PRUEBA Haga Un programa (class ) PruebaJPA1
  • 8. Y meta este main public static void main(String[] a) throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf); em.getTransaction().begin(); Integer codigodepto=13; String nombredepto="RRHH"; Departamentos dep = new Departamentos(); dep.setCodigodepto(codigodepto); dep.setNombredepto(nombredepto); service.create(dep); em.getTransaction().commit(); System.out.println("Persisted " + dep); em.close(); emf.close(); Ejecutele Debe salir Y en la base de datos debe quedar creado el Departamento 13 RRHH
  • 9. Bueno ya estamos listos para trabajar una interface Visual GUI para Departamentos Cree esta ventana con un JDialog
  • 10. Para poner funcionalidad (lógica ) al botón add Dele doble click al botón add Y digite este código String scodigo=""; String nombre =""; scodigo = jTextField1.getText(); nombre = jTextField2.getText(); if(DepartamentosTrBD.adicionar(scodigo, nombre)){ javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO ADICIONADO"); } else{ javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ADICIONAR"); } Observe la clase resaltada no ha sido creada ni por JPA ni por las clases o código que hemos introducido por tanto hay que crearla . esto se hace para que la ventana quede mas limpia de código y las operaciones sean realziadas por clases en el Control La clase DepartamentosTrBD se crea (en el package CONTROL) y se digita el código para el método adicionar asi: import MODELO.Departamentos; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; /** * * @author wdiaz */ public class DepartamentosTrBD { public static boolean adicionar(String scodigo, String nombre) { boolean r=true; int icodigo=Integer.parseInt(scodigo); Integer codigo =icodigo; Departamentos dep= new Departamentos(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf);
  • 11. em.getTransaction().begin(); dep.setCodigodepto(codigo); dep.setNombredepto(nombre); try{ service.create(dep); em.getTransaction().commit(); }catch(Exception e){ System.out.println(e); em.getTransaction().rollback(); r=false; return r; } System.out.println("Persisted " + dep); em.close(); emf.close(); return r; } Puede probar ejecutar adicionando un nuevo departamento . Haremos el código para buscar mas adelante pero puede verificar si lo adiciono con SELECT * FROM DEPARTAMENTOS en Oracle De igual manera incluya para cada botón este código Boton modify String scodigo=""; String nombre =""; scodigo = jTextField1.getText(); nombre = jTextField2.getText(); if(DepartamentosTrBD.modificar(scodigo, nombre)){ javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO MODICADO"); } else{ javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO MODIFICAR"); }
  • 12. Boton delete String scodigo=""; scodigo = jTextField1.getText(); if(DepartamentosTrBD.eliminar(scodigo)){ javax.swing.JOptionPane.showMessageDialog(this, "REGISTRO ELIMINADO CON EXITO"); } else{ javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ELIMINAR"); } Boton buscar String scodigo=""; scodigo = jTextField1.getText(); int icodigo=Integer.parseInt(scodigo); Departamentos dep=DepartamentosTrBD.getDepartamento(icodigo); if(dep!=null){ jTextField2.setText(dep.getNombredepto()); } else{ javax.swing.JOptionPane.showMessageDialog(this, "NO SE PUDO ENCONTRAR"); } Y la clase DepartamentosTrBD completa queda (en le package CONTROL) import MODELO.Departamentos; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; /** * * @author wdiaz */ public class DepartamentosTrBD { public static boolean adicionar(String scodigo, String nombre) { boolean r=true; int icodigo=Integer.parseInt(scodigo);
  • 13. Integer codigo =icodigo; Departamentos dep= new Departamentos(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf); em.getTransaction().begin(); dep.setCodigodepto(codigo); dep.setNombredepto(nombre); try{ service.create(dep); em.getTransaction().commit(); }catch(Exception e){ System.out.println(e); em.getTransaction().rollback(); r=false; return r; } System.out.println("Persisted " + dep); em.close(); emf.close(); return r; } public static boolean modificar(String scodigo, String nombre) { boolean r=true; int icodigo=Integer.parseInt(scodigo); Integer codigo =icodigo; Departamentos dep= new Departamentos(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf); em.getTransaction().begin(); dep.setCodigodepto(codigo); dep.setNombredepto(nombre); try{ service.edit(dep); em.getTransaction().commit(); }catch(Exception e){ System.out.println(e); em.getTransaction().rollback(); r=false; return r; } System.out.println("modificado " + dep); em.close();
  • 14. emf.close(); return r; } public static boolean eliminar(String scodigo) { boolean r=true; int icodigo=Integer.parseInt(scodigo); Integer codigo =icodigo; EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf); em.getTransaction().begin(); try{ service.destroy(codigo); em.getTransaction().commit(); }catch(Exception e){ System.out.println(e); em.getTransaction().rollback(); r=false; return r; } System.out.println("modificado " + codigo); em.close(); emf.close(); return r; } public static Departamentos getDepartamento(int icodigo){ Integer codigo=icodigo; Departamentos dep= new Departamentos(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("EXFINALPROJPAPU"); EntityManager em = emf.createEntityManager(); DepartamentosJpaController service = new DepartamentosJpaController (emf); dep = em.find(Departamentos.class, codigo); em.close(); emf.close(); return dep; } } Pregunta será posible hacer la lógica (código) para los botones first, previous, next y last? Algunas ideas al respecto
  • 15. En la segunda parte se hará el CRUD para la tabla EMPLEADOS teniendo en cuenta que existe una relación 1-n entre Departamentos y Empleados. ANEXO 1 : SCRIP SQL para crear la base de datos DROP TABLE EMPLEADOS; DROP TABLE DEPARTAMENTOS; CREATE TABLE departamentos ( codigodepto NUMBER(5) NOT NULL, NOMBREDEPTO VARCHAR2(25) NOT NULL, CONSTRAINT PK_departamentos PRIMARY KEY (codigodepto) ) ; CREATE TABLE EMPLEADOS ( CODIGOEMP NUMBER(5) NOT NULL, APELLIDO VARCHAR2(40) NOT NULL, NOMBRE VARCHAR2(40) NOT NULL, SEXO CHAR(1) NOT NULL, EMAIL VARCHAR2(80) NOT NULL, SALARIO NUMBER(12,2) NOT NULL, codigodepto NUMBER(5) NOT NULL, CONSTRAINT PK_EMPLEADOS PRIMARY KEY (CODIGOEMP) ) ; ALTER TABLE EMPLEADOS ADD CONSTRAINT FK_EMPLEADOS_departamentos FOREIGN KEY (codigodepto) REFERENCES departamentos (codigodepto) ; Se aconseja hacer algunos insert para tener dos o tres registros en cada tabla INSERT INTO departamentos VALUES(10,'sistemas'); INSERT INTO departamentos VALUES(11,'finanzas'); INSERT INTO EMPLEADOS VALUES(1,'GRISALES','AMPARO','F','amparito@gmail.com',5000.0,11);
  • 16. ANEXO 2 EN CASO QUE DEBA CREAR LA CONNECCION DESDE CEROS Al elegir esta opción se muestra este dialogo para crar una conexión con la base de datos Si la coneccion no esta ustede puede crearla eligiendo NEW DATABASE CONECCTION ELIJA NEW DATABSE CONNECTION
  • 17. LUEGO ELIJA Oracle Thin en la caja desplegable de drivers Y ESCOJA
  • 18. Digite luego el User Name y el pasword y presione Test Connection
  • 19. Y si todo esta bien presiones Finish