Download Tutorial DB SWING sin asistente - Proyecto

Document related concepts
no text concepts found
Transcript
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
DATOS PERSONALES:
ESCUELA
: Sistemas Mercantiles
ASIGNATURA
: Investigación Operativa
PROFESOR
: Ing. Santiago Acurio
ALUMNO
: Vinueza Pillajo Danny
NIVEL
: Séptimo Semestre
FECHA
: 27-agosto-2009
CONTENIDO
CONTENIDO:
APLICACIONES DE ESCRITORIO EN NETBEANS 6.7 – SWING
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Componentes / Herramientas requeridos
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Los comentarios que puedan sugerirse de acuerdo a nivel de conocimiento de Java,
dependerá mucho del entendimiento de la escritura en Java, además del entendimiento
de programas adicionales.
Para la realización de un programa que pueda conectarse con una base de datos
(MySQL) debe realizar en base a herramientas independientes de NetBeans 6.7 y
justamente con el último mencionado. Esta administración de base de datos permitirá
realizar un control de los datos que disminuye considerablemente el tiempo al momento
de obtener una lista ordenada de los registros existentes.
Esta forma de acceso a datos necesita de un conjunto de herramientas para la realización
del mismo, una de ellas es el MySQL Server v5 esscencial una máquina virtual que
permitirá trabajar con la base de datos necesaria o la que va a ser creada, la cual puede
ser manipulada directamente desde MySQL Comand Line Client o no, una herramienta
que viene conjuntamente como MySQL Server v5 al momento de instalar.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Un ejemplo de las instrucciones que se utilizan en este componente son:
CREATE DATABASE amanteMusica;
USE amanteMusica;
←
←
CREATE TABLE Usuario(
CODIGO INTEGER,
USUARIO varchar(20) NOT NULL,
CLAVE varchar(10) NOT NULL,
PRIMARY KEY (CODIGO)
);
←
Se debe tener el cuenta que cada fin de una instrucción es con un punto y coma (;)
El MySQL Instance Config Wizard es una ayuda automatizada para configurar el servidor.
Este permite crear configuración avanzada de los archivos (my.ini o my.cnf) realizando
una serie de preguntas y aplicando sus respuestas a una interfaz generada por el archivo
de configuración durante la instalación. Esta instancia funciona solo para Windows.
Configuración
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Las herramientas mencionadas anteriormente, necesitan para su mejor entendimiento
características adicionales como seguridad en los datos y relación entre las tablas,
migración de datos y consultas de los registros que puedan existir.
Estas herramientas de base de datos son MySQL Migration Toolkit, MySQL
Administrator y MySQL Query Browser
paquete: MySQL
mismas que se encuentran en un solo
GUI TOOLS 5.0 r17.
Este paquete lo podemos encontrar en http://mysql-gui-tools.uptodown.com/
La primera de ellas, permite migrar a MySQL mediante el uso de un asistente una amplia
gama de sistemas gestores de base de datos, entre ellos: Oracle, Microsoft SQL Server y
Microsoft Access.
La segunda, es una consola de administración que permite bajo la misma interfaz
gestionar un servidor MySQL y llevar a cabo tareas fundamentales para su
mantenimiento.
La tercera, es una herramienta visual para crear, ejecutar y optimizar consultas SQL.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Esta vez nos centraremos a crear una base de datos sencilla para demostrar su
funcionamiento y para un posterior uso, de tal forma que nos limitaremos con la
explicación, es decir, sobre el ejecutable más esencial: MySQL Administrator.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Creación de la Base Datos
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Una vez descargadas todas las herramientas, ejecutamos MySQL Administrator de la
carpeta MySQL GUI Tools 5.0.
En su interfaz inicial será el lugar donde nos solicitará el nombre del servidor, nombre de
usuario, una contraseña y el puerto por donde se conectarán los datos; los datos
requeridos se mencionan:
Server Host localhost
Username root (ó nombre que insertó durante la instalación)
Password root (ó contraseña que insertó durante la instalación)
Port 3306 (establecido de forma predeterminada, default)
UNIANDES
Pulsamos en el botón
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
y a continuación aparecerá la interfaz segundaria y a la
vez inicial para crear una base de datos (esquema), además muestra las características
principales que utilizo MySQL Administrador para su conexión: instancia del servidor,
información del servidor e información del cliente.
En esta imagen presentada se puede observar en el lado izquierdo una serie de tareas
que se puede utilizar. Hay que recordar que el objetivo inicial de usar estas herramientas
es crear una base de datos; este objetivo a realizarse necesita de la ayuda de una de las
tareas visualizadas
y por tratarle como tal, la explicación de fondo será en
base a esta.
Seleccionamos la tarea mencionada:
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
En la parte restante del lienzo donde se encuentra las bases de datos predeterminadas
(information_schemas, mysql, test) realizamos un clic derecho en este menú contextual
seleccionamos la opción Create New Schema. Esta selección originará que aparezca
una interfaz para ingresar el nombre de la base de datos a crear (amanteMusica) y luego
pulsar en el botón
. En el lienzo donde se encuentra las base de datos
aparecerá la nueva creada (amanteMusica) a la cual le damos un clic se visualizará
interfaces en un estilo de guiones expresado literalmente entre los cuales se encuentra
tablas de la base de datos (schema tables), índice de la base de datos (schema índices),
vistas (views) y procedimientos almacenados (stored procedures).
De estos guiones, usaremos tablas de la base de datos (schema tables) para crear la
base de datos.
UNIANDES
Seleccionamos el botón
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
para crear la tabla y a continuación insertamos los
datos correspondientes: Nombre de la tabla, base de datos en la cual vamos a crear la
tabla, comentario (opcional) y la creación de los campos. Para la realización de este
último, una forma fácil de ingresar campos es, hacer doble clic en la fila única (al inicio)
del lienzo de Columnas e Índices donde están datos como Nombre de la Columna,
Opciones de la Tabla y Opciones Avanzadas, automáticamente se activará el lienzo para
ingresar el campo y añadir el nombre respectivo (Hacer el mismo procedimiento para
adicionar otros campos).
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Una vez ingresados los campos necesarios seleccionamos el botón
luego aparecerá en la siguiente ventana
.
y
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Una vez aplicados los cambios en la tabla creada la cerramos
y
tendremos la vista correspondiente en tablas de la base de datos (schema tables).
Todo el procedimiento de creación base de datos que se presentó es solo una guía
básica existen otras formas de creación de base de datos, pero debemos elegir
relativamente algoritmo estructurado (paso o paso) para entender en un sentido claro y
exacto, además cabe mencionar que con esta aplicación se puede realizar relaciones
entre tablas por lo que se vuelve un ambiente interactivo y tener otra tipo de idea cuando
se trabaje en el tema de relaciones, pero eso es un subtema literal.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Conexión de la base de datos desde
NetBeans 6.7.1
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Al terminar de realizar la base de datos, ejecutamos NetBeans 6.7.1
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Seleccionamos la pestaña Prestaciones y encontraremos una ventana igual a la siguiente:
Aquí seleccionamos la carpeta Controladores a la cual hacemos un clic derecho y
pulsamos en Nuevo Controlador…
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
NetBeans necesita dos archivos para su funcionamiento, un componente java instalado
)
(
y además un conector para realizar la conexión
de la tabla; este conector es mysqk-connector-java-5.1.6-bin.jar y se lo distingue de
otros archivos ya que tiene extensión jar y el icono
.
Redireccione (copie) el conector a la dirección mostrada en imagen Nuevo Driver JDBC
y agréguelo. Pulse
.
Descargue el componente de la página que se muestra a continuación:
1. http://rapidlibrary.com/index.php?q=download+jre+6u6+windows+i586
Descargue el conector de las páginas que se muestran a continuación:
1. http://www.filestube.com/6701542c46b97ccd03ea/details.html http://gentoo.llarian.net/distfiles/mysql-connector-java-5.0.8.tar.gz
2. http://www.jarfinder.com/index.php/jars/versionInfo/34434 (adecuado)
http://mirrors.ibiblio.org/pub/mirrors/maven2/mysql/mysql-connector-java/5.1.5/mysqlconnector-java-5.1.5.jar
Esta operación añadirá un nuevo controlador a la lista actual, y este archivos se damos un
clic derecho y escogemos la opción Conectar usando… Insertar los datos necesarios en
la nueva pantalla y presionar en
.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Se presentará el link de conexión a la base de datos creada de entre los cuales se puede
distinguir otras bases propias del sistema y la que hemos creado, adicional su tabla
(usuarios).
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Pasos para crear un Nuevo Proyecto
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
A continuación se presenta una serie de imágenes las cuales se sugiere seguir su orden;
la ubicación del proyecto nuevo a crearse se uso de forma arbitraria, por lo que es
decisión del usuario la ubicación del mismo y no afectará a posteriores cambios.
UNIANDES
Creación y carga del proyecto FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Pantalla inicial después del la creación del proyecto (EjemploMusica)
Lienzo
En esta imagen se puede observar los paquetes de fuentes creados donde se localizan
los archivos creados organizados en grupos (META-INF.services , ejemplo música (…) ,
ejemplomusica.resources, ejemplomusica.resources.busyicons).
El proyecto SWING separa la vista y el control de un componente visual de sus
contenidos o modelo de datos
. Sin embargo, aunque el proyecto
Swing tiene componentes que crean la arquitectura Modelo Vista Controlador, es más
seguro entenderlo como un modelo delegado
. Esto es
porque parte del controlador Swing, frecuentemente usa eventos del ratón y de teclado
para responder al componente, es combinada con la vista física en un objeto UI delegate
(User Interfaz delegate).
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Utilización de controles SWING
y conexión
conexión a datos
(paleta de herramientas)
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Durante la creación del proyecto se distintos objetos, cada uno con una función
determinada se creó un Menú
con nombres en ingles.
Para cambiar los nombres a español basta con hacer doble clic sobre el menú File y
escribir.
Otra forma de cambiar el nombre es, seleccionar Archivo y la paleta de propiedades en la
opción text cambiar el nombre. La acción que realice esta nueva opción se la escoge en
action (la acción debe ser creada dentro de la clase FrameView del formulario). El código
para salir se presenta a continuación:
import org.jdesktop.application.Action;
public class EjemploMusicaView extends FrameView
{
.......
.......
@Action
public void salir()
{
initComponents();
//getRootPane().setDoubleBuffered(false);
//getRootPane().setVisible(true);
System.exit(0); // Para cerrar la aplicación
}
.......
.......
}
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Es el mismo procedimiento para crear el formulario de la opción Acerca de…. Se usa el
siguiente código:
@Action
public void showAboutBox()
{
// Crea un constructor del paquete ejemplomusica (ema)
ejemplomusica.EjemploMusicaAboutBox ema = new ejemplomusica.EjemploMusicaAboutBox(null);
// Hace visible el constructor
ema.setVisible(true);
}
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Luego de la revisión de las opciones de la barra de menú pasamos a realizar la creación
de objetos en el lienzo del formulario y cambiar de nombre:
Crear objetos
Cambiar nombre
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Objetos
masterTable
newButton
deleteButton
refreshButton
saveButton
En la tabla creada realizamos y clic derecho, seleccionamos la opción respectiva.
Esto dará origen a la apertura de una nueva ventana; es esta seleccionamos importar
datos al formulario y luego seleccionamos el origen de los datos (base de datos)
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Esta operación creas varios componentes: el paquete META-INF (un objeto de
persistencia es almacenado en un archivo
u otro medio de forma permanente para
recuperarlos en tiempo posterior), un Administrador de Entidades (Persistencia de
java, instancia asociada en el contexto de una persistencia, es decir, es un paquete que
contiene clases e interfaces que define el contrato entre un proveedor de persistencia y un
director de clases
y los clientes de la persistencia de java API), una Consulta
(Persistencia de java, interfaz implementada por cada vendedor de JPA (Java Persistence
PI) para encontrar objetos persistentes manejando cierto criterio de búsqueda, podemos
obtener una instancia Query desde una instancia EntityManager ) y un Resultado de la
Consulta (Persistencia de java, obtener una lista de resultados).
UNIANDES
Pulsar en
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
y la imagen de la tabla en el lienzo cambiará.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Una vez realizada la conexión de la tabla con la base de datos, ahora, conectamos las
cajas de texto (tres objetos) con los campos de tabla (indistintamente).
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Modificamos los nombres de los componentes:
Antes UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Después Se deber tener activado el check observable en las propiedades del list [List] para que se
muestren los datos.
En el editor de código del formulario ingresamos en siguiente código (texto color negro):
import org.jdesktop.application.Task;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.RollbackException;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.jdesktop.beansbinding.AbstractBindingListener;
import org.jdesktop.beansbinding.Binding;
import org.jdesktop.beansbinding.PropertyStateEvent;
public class EjemploMusicaView extends FrameView //inicio {
public EjemploMusicaView(SingleFrameApplication app) //inicio {
.......
.......
.......
.......
// tracking table selection
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
masterTable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
firePropertyChange("recordSelected",
isRecordSelected());
!isRecordSelected(),
}
});
// tracking changes to save
bindingGroup.addBindingListener(new AbstractBindingListener() {
@Override
public void targetChanged(Binding binding, PropertyStateEvent
event) {
// save action observes saveNeeded property
setSaveNeeded(true);
}
});
// have a transaction started
entityManager.getTransaction().begin();
} //fin private boolean saveNeeded;
//Declaración de la variable
public boolean isSaveNeeded() {
return saveNeeded;
}
private void setSaveNeeded(boolean saveNeeded) {
if (saveNeeded != this.saveNeeded) {
this.saveNeeded = saveNeeded;
firePropertyChange("saveNeeded", !saveNeeded, saveNeeded);
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
}
}
public boolean isRecordSelected() {
return masterTable.getSelectedRow() != -1;
}
@Action
public void newRecord() {
ejemplomusica.Usuarios u = new ejemplomusica.Usuarios();
entityManager.persist(u);
list.add(u);
int row = list.size()-1;
masterTable.setRowSelectionInterval(row, row);
masterTable.scrollRectToVisible(masterTable.getCellRect(row,
0,
true));
setSaveNeeded(true);
}
@Action(enabledProperty = "recordSelected")
public void deleteRecord() {
int[] selected = masterTable.getSelectedRows();
List<ejemplomusica.Usuarios>
toRemove
ArrayList<ejemplomusica.Usuarios>(selected.length);
=
new
for (int idx=0; idx<selected.length; idx++) {
ejemplomusica.Usuarios
u
list.get(masterTable.convertRowIndexToModel(selected[idx]));
toRemove.add(u);
entityManager.remove(u);
}
list.removeAll(toRemove);
=
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
setSaveNeeded(true);
}
@Action(enabledProperty = "saveNeeded")
public Task save() {
return new SaveTask(getApplication());
}
private class SaveTask extends Task {
SaveTask(org.jdesktop.application.Application app) {
super(app);
}
@Override protected Void doInBackground() {
try {
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
} catch (RollbackException rex) {
rex.printStackTrace();
entityManager.getTransaction().begin();
List<ejemplomusica.Usuarios>
ArrayList<ejemplomusica.Usuarios>(list.size());
merged
for (ejemplomusica.Usuarios u : list) {
merged.add(entityManager.merge(u));
}
list.clear();
list.addAll(merged);
}
return null;
}
@Override protected void finished() {
=
new
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
setSaveNeeded(false);
}
}
/**
* An example action method showing how to create asynchronous tasks
* (running on background) and how to show their progress. Note the
* artificial 'Thread.sleep' calls making the task long enough to see
the
* progress visualization - remove the sleeps for real application.
*/
@Action
public Task refresh() {
return new RefreshTask(getApplication());
}
private class RefreshTask extends Task {
RefreshTask(org.jdesktop.application.Application app) {
super(app);
}
@SuppressWarnings("unchecked")
@Override protected Void doInBackground() {
try {
setProgress(0, 0, 4);
setMessage("Rolling back the current changes...");
setProgress(1, 0, 4);
entityManager.getTransaction().rollback();
Thread.sleep(1000L); // remove for real app
setProgress(2, 0, 4);
setMessage("Starting a new transaction...");
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
entityManager.getTransaction().begin();
Thread.sleep(500L); // remove for real app
setProgress(3, 0, 4);
setMessage("Fetching new data...");
java.util.Collection data = query.getResultList();
for (Object entity : data) {
entityManager.refresh(entity);
}
Thread.sleep(1300L); // remove for real app
setProgress(4, 0, 4);
Thread.sleep(150L); // remove for real app
list.clear();
list.addAll(data);
} catch(InterruptedException ignore) { }
return null;
}
@Override protected void finished() {
setMessage("Done.");
setSaveNeeded(false);
}
}
.......
.......
.......
.......
} //fin UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Por último, enlazamos las cajas de texto con las acciones respectivas:
deleteRecord
refresh
save
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Procedimiento adicional
(Formulario desde el inicio)
inicio)
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
La creación de una aplicación java mediante un proyecto estándar IDE, genera una clase
principal en el proyecto para construir, ejecutar y depurar el proyecto.
Este procedimiento lleva el mismo orden de pasos con la diferencia que este evita líneas
de código que no se puede usar (es de acuerdo a la interfaz necesario o la más adecuado
para el usuario.
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Esta vez nos centraremos a agregar un lienzo vacío (formulario).
A continuación realizamos los mismos pasos de la página 31 a la página 37
(creación de objetos, cambio de nombre y links) hasta tener una imagen semejante a
lo que se muestra abajo:
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Al terminación de llenar con objetos necesario el formulario, ingresamos en siguiente
código (solo ingresar el texto de color negro):
Al inicio del formulario
package amantemusica [ó Nombre del paquete donde se encuentra el formulario];
import java.beans.Beans;
Este paquete es muy útil porque pone a disposición 34 clases y 13 interfaces que implementan
algunas de las estructuras de datos más comunes. Algunas operaciones sobre fechas y sobre
el calendario, y otras cosas. Además el paquete java.util incluye otros subpaquetes que son:
java.util.mime, java.util.zip y java.util.jar que sirven respectivamente para tratar archivos de tipo
MIME, de tipo ZIP y de tipo Java Archive (JAR). Como estructura de datos, se llama a la
estructura lógica lista para contener cierto número de datos, en la que es posible insertar,
quitar, buscar e incluso ordenar un array.
import java.util.List;
Clases
import java.util.ArrayList;
import javax.persistence.RollbackException;
public class NewJFrame extends javax.swing.JFrame
{
// inicio
/** Crea un Nuevo Formulario */
public NewJFrame()
{
// inicio
Interfaces
Collection
Comparator
Enumeration
EventListener
Iterator
List
ListIterator
Map
Map.Entry
Observer
Set
SortedMap
SortedSet
AbstractCollection
AbstractList
AbstractMap
AbstractSequentialList
AbstractSet
ArrayList
Arrays
BitSet
Calendar
Collections
Date
Dictionary
EventObject
GregorianCalendar
HashMap
HashSet
Hashtable
LinkedList
ListResourceBundle
Locale
Observable
Properties
PropertyPermission
PropertyResourceBundle
Random
ResourceBundle
SimpleTimeZone
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Cuando se está creando el Objeto se llama al Constructor y éste a su vez realiza una invocación al
método initComponents()
initComponents();
Se usa para actualizar los datos de una tabla en un momento determinado, es decir está en
constante ejecución. El import java.beans.Beans es una clase vulgar para llamar a cualquier
elemento creado dentro del formulario, ente caso (if) Si en el tiempo en que se ejecuta Beans
existe un corte o pausa por medio de un objeto (botón) durante la ejecución, realiza la operación
 Es decir, mientras no se ejecute un botón de nuevo, guardar, actualizar o eliminar, no se
ejecuta la operación.
if (!Beans.isDesignTime())
{
amanteMusicaPUEntityManager.getTransaction().begin();
}
} //fin
[Procedimiento de los botones
Nuevo,
Eliminar,
Guardar,
Actualizar,
.. , se muestran en las siguientes páginas]
} //fin
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
Para el botón Nuevo @Action son acciones a las que responde un objeto devolviendo un valor (pulbic void), esta
acción posee todas líneas de código de acuerdo a la función del objeto.
@Action
public void newRecord() {
Dentro del paquete ejemplomusica, se encuentra la clase usuarios a la que crea un constructor
u = new … propia de dicha clase (se genera automáticamente durante el enlace de la tabla con
los elementos de la base de datos (tabla) ) en la cual se ejecuta las procesos (seria igual a una
clase principal (literalmente).
amantemusica.Usuarios u = new amantemusica.Usuarios();
Las siguientes líneas de código, ejecutan una acción de persistencia (algo parecido a un Panel
de Control de Windows, donde están las acciones principales del sistema), en este caso añade
una nueva línea de registro y a la vez actualiza la Tabla tomando como valores su nuevo
intervalo de ingreso de datos (índice) y l hace visible (barra de movimiento o barra donde se
puede ver el ingreso de los datos para luego ser grabados.
entityManager.persist(u);
list.add(u);
int row = list.size()-1;
masterTable.setRowSelectionInterval(row, row);
masterTable.scrollRectToVisible(masterTable.getCellRect(row,
true));
0,
}
Para el botón Eliminar @Action
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
public void deleteRecord() {
Inicializa un array (entero) tomando como único valor en que se encuentra seleccionado de la
lista (Tabla de datos). Realiza un ciclo (for) hasta buscar el valor (numero de registro) y procede
a la eliminación .remove(u)
int[] selected = masterTable.getSelectedRows();
List<
amantemusica.Usuarios>
toRemove
=
new
ArrayList<
amantemusica.Usuarios>(selected.length);
for (int idx=0; idx<selected.length; idx++) {
amantemusica.Usuarios
u
=
list.get(masterTable.convertRowIndexToModel(selected[idx]));
toRemove.add(u);
entityManager.remove(u);
}
list.removeAll(toRemove);
}
Para el botón Guardar @Action
public void save()
{
Inicializa un array (entero) tomando como único valor en que se encuentra seleccionado de la
try {
lista (Tabla de datos). Realiza un ciclo (for) hasta buscar el valor (numero de registro) y procede
a la eliminación .remove(u)
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
} catch (RollbackException rex) {
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
rex.printStackTrace();
entityManager.getTransaction().begin();
Crea un constructor para fusionar (merged) el Resultado de la Consulta (Persistencia en Java) y
lo inserta.
List<amantemusica.Usuarios>
merged
=
new
ArrayList<
amantemusica.Usuarios>(list.size());
for (amantemusica.Usuarios u : list) {
merged.add(entityManager.merge(u));
}
list.clear();
list.addAll(merged);
}
}
Para el botón Actualizar @Action
public void refresh() {
Es una operación que devuelve a la base de datos a un estado
previo, es importante para la integridad de los datos ya que
puede ser restaurada a una copia limpia incluso después que se
haya realizado operaciones erróneas.
entityManager.getTransaction().rollback();
entityManager.getTransaction().begin();
UNIANDES
FORMULARIOS DE ACCESO A DATOS SIN ASISTENTE
java.util.Collection es una vía para forzar a los constructores, consiste exclusivamente
de los métodos estáticos que realizan un operación o devuelve una colección.
Contiene ALGORITMOS POLIMÓRFICOS que funcionan en colecciones de datos. query es solo el sombre de la Consulta (Persistencia en Java).
java.util.Collection data = query.getResultList();
Object entity es una clase encapsulada de un tipo de POO, esta identidad conceptual
está basada en la combinación de valores de estas propiedades java.util.Collection
data = query.getResultList(); Por lo tanto, re describen los datos de un objeto por
uno nuevo.
for (Object entity : data)
{
entityManager es el nombre del Administrador de entidades (Persistencia en Java),
mismo que se relaciona con la Consulta y el Resultado de la Consulta.
entityManager.refresh(entity);
}
list.clear();
list.addAll(data);
}