GUÍA DE PRÁCTICABD_Mysql
-
Upload
jcesar-ymorales -
Category
Documents
-
view
187 -
download
0
Transcript of GUÍA DE PRÁCTICABD_Mysql
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 18
PROGRAMACION JAVA
Pag 1
GUIacuteA DE PRAacuteCTICA PRACTICA DIRIGIDA
PROGRAMAMACION con BDJAVA
INSTRUCTOR JORGE LUIS CUADROS VASQUEZ
1 OBJETIVOS ESPECIacuteFICOS El participante seraacute capaz de crear aplicaciones con conexioacuten a BD Mysql
con Netbeans Utilizar los asistentes del IDE netbeans para realizar
conexiones a BD Introducir al participante en el mapeo de entidades
ORM y la utilizacioacuten del objeto Jtable
2 PROCESO DE EJECUCIOacuteN
21- INICIO DEL Servidor de BD SQLa)- Ejecute el MySQL Workbench y cargue el script adjunto si no
lo tuviera use el HeidiSql MenuacuteImport gt Load sql filegt
seleccione el script
b)- Estructura de la BD
22- Conexioacuten con el netbeans en el IDE tenemos que registrar
el servidor de bases de datos Ir a lapestantildea Prestaciones clic derecho en
el nodo Bases de datos En el menuacute
contextual clic en Registrar servidor
MySQL Se mostraraacute una ventana en
la que ingresaremos la
configuracioacuten del servidor
En la pestantildea Propiedades de
administracioacuten podemos especificar
la ruta de las herramientas que
utilizamos para administrar el
servidor Luego podemos observar
las bases de datos de nuestro servidor Para conectarnos a una
de ellas hacemos clic derecho en su nombre y seleccionamosConectar En la ventana que aparece debemos ingresar el
nombre y la contrasentildea del
usuario que utilizaremos para
realizar la conexioacuten Despueacutes de
hacer clic en Aceptar veremos que
en Prestaciones se ha agregado un
nuevo nodo que representa la
conexioacuten hecha mediante la cual
podemos acceder a las tablas de la
base de datos y los datos que
contiene
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 28
PROGRAMACION JAVA
Pag 2
crear un nuevo proyecto tipo Aplicacioacuten de escritorio Java Luego
de darle un nombre especificamos que utilizaraacute el inteacuterprete de
oacuterdenes Aplicacioacuten de bases de datos para que cree la
funcionalidad baacutesica por nosotros
Seleccione la BD En la lista Conexioacuten con base de datos del
siguiente paso podemos elegir una conexioacuten o crear una nueva
Vamos a escoger la que acabamos de crear Inmediatamente se
listan las tablas disponibles de la cual vamos a elegir grupo Vera
como se listan los campos de la tabla para especificar cuales se
van a incluir
Todos en este
caso
Luego podemos
especificar las opciones
de detalle las cuales son
dos
Cuadros de texto Crea un objeto JTable en el que se muestran los
registros de la tabla grupo y una serie de campo de texto que
muestran los detalles de los registros por cada campo de la tabla
Tabla Crea un objeto JTable en el que se muestran los registros de la
tabla grupo y otra tabla que contiene los registros de una tabla de
detalle (generalmente correspondiente a una relacioacuten 1-n) para el
registro seleccionado en la tabla maestra (grupo)
Para hacerlo maacutes interesante vamos a escoger la uacuteltima opcioacuten y vamos a
seleccionar la tabla musicosgrupos en la lista para mostrar el detalle de los
grupos y sus muacutesicos
Hacemos clic en Finalizar El asistente generaraacute una aplicacioacuten
completamente funcional por nosotros haciendo uso del framework SwingApplication Framework y el API Beans Binding Si ejecutamos la aplicacioacuten
podremos ver los resultados esperados
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 38
PROGRAMACION JAVA
Pag 3
Con esta aplicacioacuten podemos hacer muchas cosas como insertar editar
actualizar y eliminar registros de las tablas de la base de datos (la claacutesica
aplicacioacuten CRUD) El asistente tambieacuten hace uso de JPA (Java Persistence
API) que es la especificacioacuten estaacutendar para el manejo de la persistencia en
Java Pero solo es una especificacioacuten La implementacioacuten concreta es
TopLink una libreriacutea de Oracle (tambieacuten existen otras como Hibernate e
iBatis)
Mapeo de Objetos Relacionales
Desde los inicios de la POO los programadores han tenido que lidiar con el
problema de representar los datos que se tienen en una base de datos en un
modelo de clases y objetos Esto lleva el teacutermino de Mapeo Objeto-
Relacional (ORM por sus siglas en ingleacutes) mecanismo por el cual se puede
solucionar este problema Java tiene una especificacioacuten llamada JPA (Java
Persistence API) que permite realizar este mapeo Pero solo es eso una
especificacioacuten que indica el mecanismo necesario para llevar a cabo el
mapeo Existen baacutesicamente cuatro implementaciones de JPA a saber
Hibernate TopLink OpenJPA y EclipseLink El elegir una u otra
implementacioacuten depende uacutenicamente del rendimiento pues gracias a JPA
podemos trabajar con cualquiera de estas implementaciones y cambiar entre
ellas de manera transparente para nosotros El mapeo objeto-relacional se
realiza a traveacutes de las llamadas clases entidad que son POJOrsquos que tienen
una estructura especial Un POJO (Plain Old Java Object) es un objeto de una
clase simple que no implementa raras interfaces y que puede ser escrita de
la manera convencional Los POJOrsquos fueron la respuesta a la tendencia que
habiacutea de obligar a los programadores a crear clases que implementaran
interfaces (como en EJB) JPA es todo un mundo en esta praacutectica crearemos
clases entidad a partir de la base de datos Northwind con mysql Pasos
1- Crear un proyecto de aplicacioacuten de escritorio ( Swing Application
Framework) Aquiacute vamos a crear las clases entidad y la unidad de persistencia
por nuestra cuenta
2- seleccione crear entidades a partir de BD Una vez que el asistente ha
creado nuestra aplicacioacuten creamos las clases entidad pulsando Ctrl + N y
eligiendo en la ventana resultante la categoriacutea Persistencia y en Tipo de
archivo Clases entidad a partir de base de datos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 48
PROGRAMACION JAVA
Pag 4
3- En el siguiente paso del asistente especificamos la conexioacuten de la que
recuperaraacute los datos Una vez hecho esto se listan las tablas existentes en la
base de datos Hacemos clic en Agregar todo para crear las clases entidad de
todas las tablas de nuestra base de datos La ventaja de esto es que el
asistente crea las clases entidad con toda la funcionalidad necesaria para
realizar el mapeo incluyendo las relaciones que pueden haber en nuestra
base de datos Si solo agregamos unas cuantas tablas y en un momento
posterior tenemos que mapear las demaacutes tendriacuteamos que hacer todo esto
nosotros a mano
4- El siguiente paso nos muestra las tablas de la base de datos y sus
correspondientes clases entidad permitiendo modificar sus nombres
Tambieacuten nos permite especificar un paquete para las clases que se van a
crear (lo cual es recomendable)
En la parte inferior nos dice que el proyecto no tiene una unidad de
persistencia Una unidad de persistencia contiene los paraacutemetros necesarios
para realizar la conexioacuten a la base de datos la clase del proveedor de
persistencia (que se encuentra en los jars de la implementacioacuten JPA que
elijamos) las clases entidad de nuestra aplicacioacuten y los paraacutemetros JDBC de
acceso a la base de datos La unidad de persistencia se almacena en un
archivo llamado persistencexml y es la responsable de que podamos
cambiar de implementacioacuten JPA e incluso de SGBD sin que toquemos el
coacutedigo de nuestra aplicacioacuten
5- Creamos la unidad de persistencia pulsando el botoacuten Crear unidad de
persistencia (obvio no) En la ventana resultante especificamos el nombre de
la unidad de persistencia y la biblioteca que vamos a utilizar Esa es otra
ventaja de crear las clases entidad a mano Utilizando el shell de base de
datos NetBeans trabaja por defecto con TopLink En este caso tenemos la
libertad de escoger nuestra implementacioacuten Hibernate para nosotros La
estrategia de generacioacuten de tablas se refiere a la poliacutetica utilizada para crear
nuevas tablas en nuestra base de datos Como no vamos a hacer esto lo
dejamos con Ninguno
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 58
PROGRAMACION JAVA
Pag 5
6- En el uacuteltimo paso tenemos opciones adicionales La uacutenica que vamos a
modificar es el tipo de coleccioacuten Para explicar porque tomemos un ejemplo
Existe una relacioacuten de uno a muchos entre los clientes y sus pedidos Un
cliente puede hacer muchos pedido pero cada pedido pertenece a un uacutenico
cliente Para realizar el mapeo en estas tablas JPA incluye en la clase Pedido
una referencia al objeto Cliente al que pertenece mientras que en la clase
Cliente agrega una lista de objetos Pedido Podemos especificar que esta lista
sea de tipo Collection List o Set Nosotros vamos a decirle a JPA que utilice
una referencia List
Y eso es todo El asistente se ocupa de crear las clases entidad capaces de
realizar el mapeo objeto-relacional en nuestra base de datos por nosotros
Pero esto no es suficiente En nuestra aplicacioacuten debemos crear el coacutedigo
que creara la unidad de persistencia y los objetos que permitiraacuten realizar
consultas y persistir objetos en nuestra base de datos
7- Agregar Driver Mysql
8- podemos crear un paquete de prueba Junit
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 28
PROGRAMACION JAVA
Pag 2
crear un nuevo proyecto tipo Aplicacioacuten de escritorio Java Luego
de darle un nombre especificamos que utilizaraacute el inteacuterprete de
oacuterdenes Aplicacioacuten de bases de datos para que cree la
funcionalidad baacutesica por nosotros
Seleccione la BD En la lista Conexioacuten con base de datos del
siguiente paso podemos elegir una conexioacuten o crear una nueva
Vamos a escoger la que acabamos de crear Inmediatamente se
listan las tablas disponibles de la cual vamos a elegir grupo Vera
como se listan los campos de la tabla para especificar cuales se
van a incluir
Todos en este
caso
Luego podemos
especificar las opciones
de detalle las cuales son
dos
Cuadros de texto Crea un objeto JTable en el que se muestran los
registros de la tabla grupo y una serie de campo de texto que
muestran los detalles de los registros por cada campo de la tabla
Tabla Crea un objeto JTable en el que se muestran los registros de la
tabla grupo y otra tabla que contiene los registros de una tabla de
detalle (generalmente correspondiente a una relacioacuten 1-n) para el
registro seleccionado en la tabla maestra (grupo)
Para hacerlo maacutes interesante vamos a escoger la uacuteltima opcioacuten y vamos a
seleccionar la tabla musicosgrupos en la lista para mostrar el detalle de los
grupos y sus muacutesicos
Hacemos clic en Finalizar El asistente generaraacute una aplicacioacuten
completamente funcional por nosotros haciendo uso del framework SwingApplication Framework y el API Beans Binding Si ejecutamos la aplicacioacuten
podremos ver los resultados esperados
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 38
PROGRAMACION JAVA
Pag 3
Con esta aplicacioacuten podemos hacer muchas cosas como insertar editar
actualizar y eliminar registros de las tablas de la base de datos (la claacutesica
aplicacioacuten CRUD) El asistente tambieacuten hace uso de JPA (Java Persistence
API) que es la especificacioacuten estaacutendar para el manejo de la persistencia en
Java Pero solo es una especificacioacuten La implementacioacuten concreta es
TopLink una libreriacutea de Oracle (tambieacuten existen otras como Hibernate e
iBatis)
Mapeo de Objetos Relacionales
Desde los inicios de la POO los programadores han tenido que lidiar con el
problema de representar los datos que se tienen en una base de datos en un
modelo de clases y objetos Esto lleva el teacutermino de Mapeo Objeto-
Relacional (ORM por sus siglas en ingleacutes) mecanismo por el cual se puede
solucionar este problema Java tiene una especificacioacuten llamada JPA (Java
Persistence API) que permite realizar este mapeo Pero solo es eso una
especificacioacuten que indica el mecanismo necesario para llevar a cabo el
mapeo Existen baacutesicamente cuatro implementaciones de JPA a saber
Hibernate TopLink OpenJPA y EclipseLink El elegir una u otra
implementacioacuten depende uacutenicamente del rendimiento pues gracias a JPA
podemos trabajar con cualquiera de estas implementaciones y cambiar entre
ellas de manera transparente para nosotros El mapeo objeto-relacional se
realiza a traveacutes de las llamadas clases entidad que son POJOrsquos que tienen
una estructura especial Un POJO (Plain Old Java Object) es un objeto de una
clase simple que no implementa raras interfaces y que puede ser escrita de
la manera convencional Los POJOrsquos fueron la respuesta a la tendencia que
habiacutea de obligar a los programadores a crear clases que implementaran
interfaces (como en EJB) JPA es todo un mundo en esta praacutectica crearemos
clases entidad a partir de la base de datos Northwind con mysql Pasos
1- Crear un proyecto de aplicacioacuten de escritorio ( Swing Application
Framework) Aquiacute vamos a crear las clases entidad y la unidad de persistencia
por nuestra cuenta
2- seleccione crear entidades a partir de BD Una vez que el asistente ha
creado nuestra aplicacioacuten creamos las clases entidad pulsando Ctrl + N y
eligiendo en la ventana resultante la categoriacutea Persistencia y en Tipo de
archivo Clases entidad a partir de base de datos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 48
PROGRAMACION JAVA
Pag 4
3- En el siguiente paso del asistente especificamos la conexioacuten de la que
recuperaraacute los datos Una vez hecho esto se listan las tablas existentes en la
base de datos Hacemos clic en Agregar todo para crear las clases entidad de
todas las tablas de nuestra base de datos La ventaja de esto es que el
asistente crea las clases entidad con toda la funcionalidad necesaria para
realizar el mapeo incluyendo las relaciones que pueden haber en nuestra
base de datos Si solo agregamos unas cuantas tablas y en un momento
posterior tenemos que mapear las demaacutes tendriacuteamos que hacer todo esto
nosotros a mano
4- El siguiente paso nos muestra las tablas de la base de datos y sus
correspondientes clases entidad permitiendo modificar sus nombres
Tambieacuten nos permite especificar un paquete para las clases que se van a
crear (lo cual es recomendable)
En la parte inferior nos dice que el proyecto no tiene una unidad de
persistencia Una unidad de persistencia contiene los paraacutemetros necesarios
para realizar la conexioacuten a la base de datos la clase del proveedor de
persistencia (que se encuentra en los jars de la implementacioacuten JPA que
elijamos) las clases entidad de nuestra aplicacioacuten y los paraacutemetros JDBC de
acceso a la base de datos La unidad de persistencia se almacena en un
archivo llamado persistencexml y es la responsable de que podamos
cambiar de implementacioacuten JPA e incluso de SGBD sin que toquemos el
coacutedigo de nuestra aplicacioacuten
5- Creamos la unidad de persistencia pulsando el botoacuten Crear unidad de
persistencia (obvio no) En la ventana resultante especificamos el nombre de
la unidad de persistencia y la biblioteca que vamos a utilizar Esa es otra
ventaja de crear las clases entidad a mano Utilizando el shell de base de
datos NetBeans trabaja por defecto con TopLink En este caso tenemos la
libertad de escoger nuestra implementacioacuten Hibernate para nosotros La
estrategia de generacioacuten de tablas se refiere a la poliacutetica utilizada para crear
nuevas tablas en nuestra base de datos Como no vamos a hacer esto lo
dejamos con Ninguno
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 58
PROGRAMACION JAVA
Pag 5
6- En el uacuteltimo paso tenemos opciones adicionales La uacutenica que vamos a
modificar es el tipo de coleccioacuten Para explicar porque tomemos un ejemplo
Existe una relacioacuten de uno a muchos entre los clientes y sus pedidos Un
cliente puede hacer muchos pedido pero cada pedido pertenece a un uacutenico
cliente Para realizar el mapeo en estas tablas JPA incluye en la clase Pedido
una referencia al objeto Cliente al que pertenece mientras que en la clase
Cliente agrega una lista de objetos Pedido Podemos especificar que esta lista
sea de tipo Collection List o Set Nosotros vamos a decirle a JPA que utilice
una referencia List
Y eso es todo El asistente se ocupa de crear las clases entidad capaces de
realizar el mapeo objeto-relacional en nuestra base de datos por nosotros
Pero esto no es suficiente En nuestra aplicacioacuten debemos crear el coacutedigo
que creara la unidad de persistencia y los objetos que permitiraacuten realizar
consultas y persistir objetos en nuestra base de datos
7- Agregar Driver Mysql
8- podemos crear un paquete de prueba Junit
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 38
PROGRAMACION JAVA
Pag 3
Con esta aplicacioacuten podemos hacer muchas cosas como insertar editar
actualizar y eliminar registros de las tablas de la base de datos (la claacutesica
aplicacioacuten CRUD) El asistente tambieacuten hace uso de JPA (Java Persistence
API) que es la especificacioacuten estaacutendar para el manejo de la persistencia en
Java Pero solo es una especificacioacuten La implementacioacuten concreta es
TopLink una libreriacutea de Oracle (tambieacuten existen otras como Hibernate e
iBatis)
Mapeo de Objetos Relacionales
Desde los inicios de la POO los programadores han tenido que lidiar con el
problema de representar los datos que se tienen en una base de datos en un
modelo de clases y objetos Esto lleva el teacutermino de Mapeo Objeto-
Relacional (ORM por sus siglas en ingleacutes) mecanismo por el cual se puede
solucionar este problema Java tiene una especificacioacuten llamada JPA (Java
Persistence API) que permite realizar este mapeo Pero solo es eso una
especificacioacuten que indica el mecanismo necesario para llevar a cabo el
mapeo Existen baacutesicamente cuatro implementaciones de JPA a saber
Hibernate TopLink OpenJPA y EclipseLink El elegir una u otra
implementacioacuten depende uacutenicamente del rendimiento pues gracias a JPA
podemos trabajar con cualquiera de estas implementaciones y cambiar entre
ellas de manera transparente para nosotros El mapeo objeto-relacional se
realiza a traveacutes de las llamadas clases entidad que son POJOrsquos que tienen
una estructura especial Un POJO (Plain Old Java Object) es un objeto de una
clase simple que no implementa raras interfaces y que puede ser escrita de
la manera convencional Los POJOrsquos fueron la respuesta a la tendencia que
habiacutea de obligar a los programadores a crear clases que implementaran
interfaces (como en EJB) JPA es todo un mundo en esta praacutectica crearemos
clases entidad a partir de la base de datos Northwind con mysql Pasos
1- Crear un proyecto de aplicacioacuten de escritorio ( Swing Application
Framework) Aquiacute vamos a crear las clases entidad y la unidad de persistencia
por nuestra cuenta
2- seleccione crear entidades a partir de BD Una vez que el asistente ha
creado nuestra aplicacioacuten creamos las clases entidad pulsando Ctrl + N y
eligiendo en la ventana resultante la categoriacutea Persistencia y en Tipo de
archivo Clases entidad a partir de base de datos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 48
PROGRAMACION JAVA
Pag 4
3- En el siguiente paso del asistente especificamos la conexioacuten de la que
recuperaraacute los datos Una vez hecho esto se listan las tablas existentes en la
base de datos Hacemos clic en Agregar todo para crear las clases entidad de
todas las tablas de nuestra base de datos La ventaja de esto es que el
asistente crea las clases entidad con toda la funcionalidad necesaria para
realizar el mapeo incluyendo las relaciones que pueden haber en nuestra
base de datos Si solo agregamos unas cuantas tablas y en un momento
posterior tenemos que mapear las demaacutes tendriacuteamos que hacer todo esto
nosotros a mano
4- El siguiente paso nos muestra las tablas de la base de datos y sus
correspondientes clases entidad permitiendo modificar sus nombres
Tambieacuten nos permite especificar un paquete para las clases que se van a
crear (lo cual es recomendable)
En la parte inferior nos dice que el proyecto no tiene una unidad de
persistencia Una unidad de persistencia contiene los paraacutemetros necesarios
para realizar la conexioacuten a la base de datos la clase del proveedor de
persistencia (que se encuentra en los jars de la implementacioacuten JPA que
elijamos) las clases entidad de nuestra aplicacioacuten y los paraacutemetros JDBC de
acceso a la base de datos La unidad de persistencia se almacena en un
archivo llamado persistencexml y es la responsable de que podamos
cambiar de implementacioacuten JPA e incluso de SGBD sin que toquemos el
coacutedigo de nuestra aplicacioacuten
5- Creamos la unidad de persistencia pulsando el botoacuten Crear unidad de
persistencia (obvio no) En la ventana resultante especificamos el nombre de
la unidad de persistencia y la biblioteca que vamos a utilizar Esa es otra
ventaja de crear las clases entidad a mano Utilizando el shell de base de
datos NetBeans trabaja por defecto con TopLink En este caso tenemos la
libertad de escoger nuestra implementacioacuten Hibernate para nosotros La
estrategia de generacioacuten de tablas se refiere a la poliacutetica utilizada para crear
nuevas tablas en nuestra base de datos Como no vamos a hacer esto lo
dejamos con Ninguno
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 58
PROGRAMACION JAVA
Pag 5
6- En el uacuteltimo paso tenemos opciones adicionales La uacutenica que vamos a
modificar es el tipo de coleccioacuten Para explicar porque tomemos un ejemplo
Existe una relacioacuten de uno a muchos entre los clientes y sus pedidos Un
cliente puede hacer muchos pedido pero cada pedido pertenece a un uacutenico
cliente Para realizar el mapeo en estas tablas JPA incluye en la clase Pedido
una referencia al objeto Cliente al que pertenece mientras que en la clase
Cliente agrega una lista de objetos Pedido Podemos especificar que esta lista
sea de tipo Collection List o Set Nosotros vamos a decirle a JPA que utilice
una referencia List
Y eso es todo El asistente se ocupa de crear las clases entidad capaces de
realizar el mapeo objeto-relacional en nuestra base de datos por nosotros
Pero esto no es suficiente En nuestra aplicacioacuten debemos crear el coacutedigo
que creara la unidad de persistencia y los objetos que permitiraacuten realizar
consultas y persistir objetos en nuestra base de datos
7- Agregar Driver Mysql
8- podemos crear un paquete de prueba Junit
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 48
PROGRAMACION JAVA
Pag 4
3- En el siguiente paso del asistente especificamos la conexioacuten de la que
recuperaraacute los datos Una vez hecho esto se listan las tablas existentes en la
base de datos Hacemos clic en Agregar todo para crear las clases entidad de
todas las tablas de nuestra base de datos La ventaja de esto es que el
asistente crea las clases entidad con toda la funcionalidad necesaria para
realizar el mapeo incluyendo las relaciones que pueden haber en nuestra
base de datos Si solo agregamos unas cuantas tablas y en un momento
posterior tenemos que mapear las demaacutes tendriacuteamos que hacer todo esto
nosotros a mano
4- El siguiente paso nos muestra las tablas de la base de datos y sus
correspondientes clases entidad permitiendo modificar sus nombres
Tambieacuten nos permite especificar un paquete para las clases que se van a
crear (lo cual es recomendable)
En la parte inferior nos dice que el proyecto no tiene una unidad de
persistencia Una unidad de persistencia contiene los paraacutemetros necesarios
para realizar la conexioacuten a la base de datos la clase del proveedor de
persistencia (que se encuentra en los jars de la implementacioacuten JPA que
elijamos) las clases entidad de nuestra aplicacioacuten y los paraacutemetros JDBC de
acceso a la base de datos La unidad de persistencia se almacena en un
archivo llamado persistencexml y es la responsable de que podamos
cambiar de implementacioacuten JPA e incluso de SGBD sin que toquemos el
coacutedigo de nuestra aplicacioacuten
5- Creamos la unidad de persistencia pulsando el botoacuten Crear unidad de
persistencia (obvio no) En la ventana resultante especificamos el nombre de
la unidad de persistencia y la biblioteca que vamos a utilizar Esa es otra
ventaja de crear las clases entidad a mano Utilizando el shell de base de
datos NetBeans trabaja por defecto con TopLink En este caso tenemos la
libertad de escoger nuestra implementacioacuten Hibernate para nosotros La
estrategia de generacioacuten de tablas se refiere a la poliacutetica utilizada para crear
nuevas tablas en nuestra base de datos Como no vamos a hacer esto lo
dejamos con Ninguno
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 58
PROGRAMACION JAVA
Pag 5
6- En el uacuteltimo paso tenemos opciones adicionales La uacutenica que vamos a
modificar es el tipo de coleccioacuten Para explicar porque tomemos un ejemplo
Existe una relacioacuten de uno a muchos entre los clientes y sus pedidos Un
cliente puede hacer muchos pedido pero cada pedido pertenece a un uacutenico
cliente Para realizar el mapeo en estas tablas JPA incluye en la clase Pedido
una referencia al objeto Cliente al que pertenece mientras que en la clase
Cliente agrega una lista de objetos Pedido Podemos especificar que esta lista
sea de tipo Collection List o Set Nosotros vamos a decirle a JPA que utilice
una referencia List
Y eso es todo El asistente se ocupa de crear las clases entidad capaces de
realizar el mapeo objeto-relacional en nuestra base de datos por nosotros
Pero esto no es suficiente En nuestra aplicacioacuten debemos crear el coacutedigo
que creara la unidad de persistencia y los objetos que permitiraacuten realizar
consultas y persistir objetos en nuestra base de datos
7- Agregar Driver Mysql
8- podemos crear un paquete de prueba Junit
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 58
PROGRAMACION JAVA
Pag 5
6- En el uacuteltimo paso tenemos opciones adicionales La uacutenica que vamos a
modificar es el tipo de coleccioacuten Para explicar porque tomemos un ejemplo
Existe una relacioacuten de uno a muchos entre los clientes y sus pedidos Un
cliente puede hacer muchos pedido pero cada pedido pertenece a un uacutenico
cliente Para realizar el mapeo en estas tablas JPA incluye en la clase Pedido
una referencia al objeto Cliente al que pertenece mientras que en la clase
Cliente agrega una lista de objetos Pedido Podemos especificar que esta lista
sea de tipo Collection List o Set Nosotros vamos a decirle a JPA que utilice
una referencia List
Y eso es todo El asistente se ocupa de crear las clases entidad capaces de
realizar el mapeo objeto-relacional en nuestra base de datos por nosotros
Pero esto no es suficiente En nuestra aplicacioacuten debemos crear el coacutedigo
que creara la unidad de persistencia y los objetos que permitiraacuten realizar
consultas y persistir objetos en nuestra base de datos
7- Agregar Driver Mysql
8- podemos crear un paquete de prueba Junit
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 68
PROGRAMACION JAVA
Pag 6
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(UnidadPersistencia)
EntityManager manager = factorycreateEntityManager()
El meacutetodo createEntityManagerFactory toma el nombre de la unidad de
persistencia la crea y devuelve un objeto EntityManagerFactory que esutilizado para crear objetos EntityManager Los objetos EntityManager
tienen meacutetodos que permiten realizar consultas persistir actualizar y
eliminar objetos en nuestra base de datos (obviamente lo que se modifican
son los registros de las tablas) y muchas otras cosas maacutes Para realizar una
consulta se utiliza el lenguaje JPQL (Java Persistence Query Language) que es
similar a SQL pero trabaja con objetos y sus propiedades He aquiacute un
ejemplo Query consulta = managercreateQuery(ldquoSELECT ccompanyName
FROM Customers crdquo)
Vemos que la consulta utiliza una sintaxis orientada a objetos Como la
propiedad companyName de Customers es de tipo String al ejecutar laconsulta nos daraacute como resultado una lista de objetos String La recuperamos
de la siguiente manera ListltStringgt resultados = consultagetResultList()
import javautilList
import javaxpersistenceEntityManager
import javaxpersistenceEntityManagerFactory
import javaxpersistencePersistence
import javaxpersistenceQuery
import orgjunitAfter
import orgjunitAfterClass
import orgjunitBefore
import orgjunitBeforeClass
import orgjunitTest
Test
public void probarConexion( )
EntityManagerFactory factory =
PersistencecreateEntityManagerFactory(NorthwindPU)
EntityManager manager = factorycreateEntityManager()
Query consulta = managercreateQuery(SELECT ccompanyName FROM
Customers c)
ListltStringgt listaClientes = consultagetResultList()
for (String cliente listaClientes)
Systemoutprintln(cliente)
managerclose()
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 78
PROGRAMACION JAVA
Pag 7
JTABLELas tablas nos permiten tener tabulados de informacioacuten que se vean
organizados y que sean de utilidad para los clientes Las tablas son muy
utilizadas en programas similares a excel donde se deben tener rejillas de
informacioacuten o en programas de administracioacuten donde pueden haber varios
productos que tienen un conjunto de caracteriacutesticas u otras aplicaciones
Para agregar una tabla en NetBeans selecciona el icono de tabla de la paleta
(que regularmente se encuentra a la derecha) Una vez que lo hayas
seleccionado agreacutegalo a la ventana principal El JTable utiliza un DataModel
para representar sus datos de la misma manera que varios otros
componentes como JList Creando un modelo estaacutetico El modelo nos
permite indicarle a la tabla queacute informacioacuten va a contener Si soacutelo queremos
presentar informacioacuten estaacutetica (que nunca cambia) al cliente entonces
podemos usar un modelo estaacutetico para hacer esto vamos a hacer click en el
atributo model que se encuentra en las propiedades Una vez que hicimos
click apareceraacute una pantalla en la que podemos editar coacutemo queremos que
se vea la tabla En esta pantalla podemos seleccionar el nuacutemero de
columnas el nombre de las columnas e incluso podemos agregar algunos
datos
En la pantalla anterior podemos ver coacutemo manejar el nuacutemero de columnas
(con los botones de Insert Delete o con los botones de + -) y tambieacutenpodemos ver una rejilla donde podemos poner el tiacutetulo que aparece en la
columna el tipo de dato que va a guardar y si se puede editar o no Con esto
podemos crear una tabla estaacutetica que siempre va a iniciar con los mismos
datos
Creando un modelo dinaacutemico
La mayoriacutea de las veces un usuario no va a querer una tabla estaacutetica
(en la que aunque pueda editar los valores no se muestren los valores
que se habiacutean guardado previamente) Es por esto que es necesario
crear un modelo dinaacutemico Para poder crear un modelo dinaacutemico es
necesario implementar la interfaz TableModel que nos obliga a
sobrecargar un gran nuacutemero de meacutetodos
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla
5112018 GUIacuteA DE PRAacuteCTICABD_Mysql - slidepdfcom
httpslidepdfcomreaderfullguia-de-practicabdmysql 88
PROGRAMACION JAVA
Pag 8
getColumnClass() Es un meacutetodo que nos permite saber queacute clase
tiene guardada cada columna esto es para que sean maacutes
faacuteciles de pintar para java
getColumnCount() Es un meacutetodo que nos permite saber cuaacutentas
columnas tiene la tablagetColumnName() Es un meacutetodo que nos permite saber el
encabezado de la tabla para una cierta columna
getRowCount() Es un meacutetodo que nos permite saber cuaacutentas
filas tiene la tabla
getValueAt() Es un meacutetodo que nos devuelve el valor que se
encuentra en la posicioacuten pasada como paraacutemetro
isCellEditable() Es un meacutetodo que nos devuelve verdadero si la
celda puede ser modificada o falso en caso contrario
setValueAt() Es un meacutetodo que nos permite cambiar el valor que
se encuentra en la posicioacuten pasada como paraacutemetro mediantecoacutedigo (el usuario puede cambiar los datos dependiendo del
meacutetodo isCellEditable())
getValueAt() Es un meacutetodo que nos devuelve el valor que estaacute
guardado en la celda pasada como paraacutemetro este valor va a
ser de la clase que indica getColumnClass() para esa columna
Ademaacutes de todos los meacutetodos anteriores la interfaz TableModel tiene
un par de meacutetodos para manejar eventos (como por ejemplo que el
usuario haga click que edite una celda) Estos meacutetodos involucran
agregar coacutedigo a nuestra clase que cuando modifique alguacuten valor o
que agregue nuevos datos tenga que disparar eventos Este coacutedigo
aunque no es muy complicado no tendriacutea ninguna utilidad (a menos
que vayamos a escribir una manera de deshacer acciones o algo
similar) sin embargo como tenemos que implementar TableModel
tendriacuteamos que implementarlos Por suerte Java cuenta con un
modelo ya implementado (el que utilizan todas las tablas al ser
creadas) que podemos utilizar para no implementar estos meacutetodos
entonces en lugar de implmentar la interfaz TableModel vamos a
extender la clase DefaultTableModel que ya implementa la interfaz
anterior
Implementando el modelo dinaacutemico
Normalmente las tablas soacutelo crecen en una direccioacuten (hacia abajo
aumentando el nuacutemero de filas) Por ejemplo en el reporte de
empleados es probable que contratemos o despidamos empleados
por lo que vamos a tener que agregar maacutes filas sin embargo seriacutea raro
que apareciera un nuevo atributo que quisieacuteramos manejar del
empleado (y maacutes raro auacuten que el cliente pudiera modificar el
programa de tal manera que lo agregue) Entonces como la mayoriacutea
de las tablas crecen en una sola dimensioacuten(soacutelo aumenta el nuacutemero de
filas) vamos a implementar un modelo en el que utilizando un
ArrayList que contiene arreglos vamos a manejar el crecimiento de la
tabla (el ArrayList puede crecer pero los arreglos no)
Tarea
Implementar un Jtable dinaacutemico
Implementar un Jtable que permita editar insertar y borrar
Datos de una tabla