Grabación de Tablas

 Suponemos que tenemos desarrollados las Entidades y atributos de las dos tablas que queremos implementar así como las relaciones entre ellas, que en este caso son muy sencillas, pero conviene realizar los esquemas E/R, previamente a implementar las tablas.


En este esquema hemos de tener en cuenta varias cosas:

Las Entidades (Clases en POO) son rectángulos con sus nombres.
Los Atributos (Variables atributo en POO) son elipses con sus nombres; y el atributo Clave se subraya -en nuestro caso son los dos ID, pero el subrrayado no se vé-.
Las relaciones son rombos con el verbo que indica el tipo de relación. Y lo mas complejo que es la cardinación de las relaciones, pueden ser (1-1), como en este caso una persona solo puede vivir en una provincia; (1-n) , como tambien en este caso, en una provincia pueden vivir n personas; una relación (1-n) genera una clave aneja o foránea, como veremos que será una columna PROVINCIA en la tabla PERSONAS. Podría existir una relación (n-n) que generaría una tabla nueva, que aquí no se da.

Para este ejemplo se ha creado el siguiente script SQL que se encargará de crear las tablas:

CREATE TABLE PROVINCIA (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
    CODIGO CHAR(2),
    NOMBRE VARCHAR(20) NOT NULL,
    CONSTRAINT ID_PROVINCIA_PK PRIMARY KEY (ID)
);

CREATE TABLE PERSONA (
    ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY, -- Id autonumérico
    NOMBRE VARCHAR(20) NOT NULL,
    APELLIDOS VARCHAR(40) NOT NULL,
    TELEFONO VARCHAR(15),
    EMAIL VARCHAR(30),
    PROVINCIA INTEGER NOT NULL,
    FECHA_NACIMIENTO DATE,
    NUM_HIJOS SMALLINT,
    ESTADO_CIVIL CHAR(1),
    SALARIO DECIMAL(7,2),
    JUBILADO BOOLEAN,
    FOTO VARCHAR(30),
    CONSTRAINT ID_PERSONA_PK PRIMARY KEY (ID),
    CONSTRAINT PROV_PERSONA_FK FOREIGN KEY (PROVINCIA) REFERENCES PROVINCIA (ID)
);

Puedes ver que cada tabla dispone de un campo ID como identificador para cada registro, que es autonumérico y que se utilizará como clave primaria de cada tabla. 

Observa también que no sólo se han creado columnas de tipo VARCHAR, sino también algunas de tipo numérico con distintos tamaños (INTEGER, SMALLINT, DECIMAL, etc), así como la columna JUBILADO de tipo BOOLEAN o la fecha de nacimiento de tipo DATE, para poder conocer cómo se pueden gestionar esos otros tipos de datos desde Java. Consulta la documentación de los tipos de datos de Derby para conocerlos mejor.

La relación entre las 2 tablas se lleva a cabo mediante la clave foránea PROVINCIA de la tabla PERSONA que hará referencia a un valor numérico entero correspondiente a una ID de la tabla PROVINCIA. Consulta la documentación de la cláusula CONSTRAINT de Derby para conocer mejor su uso.

Para ejecutar el script SQL anterior, crea un fichero sql poniendo el botón derecho sobre el Package agendacontactos en la pestaña Projects, y elige New> SQLfile...  dale el nombre CrearTablas.sql y copia todo el Script SQL de arriba; haz clic sobre el botón Run SQL de la barra de herramientas asociada a este archivo y te generará las tablas en la pestaña SERVICES

    

En los distintos atributos de las tablas, los iconos de los atributos toman un color distinto: los identificadores, tienen una banda roja, y el Foreing KEY  PROVINCIA, en la tabla PERSONA, tiene la banda verde, que casi no se nota.

Ahora vamos a ver una peculiaridad de NetBeans, que nos permite crear las Clases Entidad, es decir Provincia y Persona. Para ello vamos a Projects, ponemos el cursor encima del paquete agendacontactos y New >Entity Classes from Database, seleccionamos hasta llegar a esta ventana, teniendo cuidado de poner en el recuadro Database Connection nuestra conexión. Add All>> Seleccionamos las dos tablas y tenemos esta imagen:

Y pasamos a esta otra ventana:



Clicamos Next, y en la siguiente ventana Finish
y nos habrá generado las Clases Persona y Provincia.
            

Como son clases Java es preciso conocer este lenguaje: lo que son atributos, constructores, métodos, consultas predefinidas, tipos de variables, ... requiere un conocimiento previo y costoso.

Archivo persistence.xml de configuración de la Unidad de Persistencia

Anteriormente se comentó que ademaś de las clases entidad, el asistente de generación de dichas clases crea además el archivo persistence.xml dentro del paquete META-INF. En ese archivo se encuentra la configuración necesaria para realizar la conexión con la base de datos. Contiene, por ejemplo, el nombre de la base de datos, el usuario y contraseña de conexión, etc.

En la tecnología empleada por JPA se conoce como Unidad de Persistencia (PersistenceUnit) y el nombre que se le asigne debes tenerlo en cuenta, ya que se usará posteriormente en el código Java de la aplicación. En este caso se le ha asignado el nombre AgendaContactosPU.





Comentarios

Entradas populares de este blog

Operaciones sobre la base de datos

Empezando a crear una Base de Datos.