La base de datos
Relaciones entre las entidades
Para realizar el mapeo entre las entidades de la aplicación y la base de datos, en este ejemplo utilizamos las anotaciones JPA. La figura muestra las anotaciones que se encuentran definidas en el código.
Diagrama de la base de datos
Configuraciones de la base de datos
Hay dos archivos muy importantes para configurar la base de datos que utilizará la aplicación:
- persistence.xml
- glassfish-resources.xml
persistence.xml
Este archivo debe estar definido en el proyecto logic en la carpeta de Meta-INF. Las propiedades más importantes que se deben definir en este archivo son:
- El nombre de la unidad de persistencia:
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" ...>
<persistence-unit name="BookStorePU" transaction-type="JTA">
El nombre que se define en este archivo, debe coincidir con el nombre que se utilice en las clases XYZPersistence cuando se anota la variable EntityManager
:
@Stateless
public class BookPersistence {
@PersistenceContext(unitName = "BookStorePU")
protected EntityManager em;
El tipo de transacciones que se utilizarán (en este caso JTA)
El nombre del data source que se utilizará. Este último debe configurarse en el archivo glassfish-resources.xml. En nuestro ejemplo este es:
<jta-data-source>java:app/jdbc/BookStore</jta-data-source>
glassfish-resources.xml
Este archivo debe estar definido en el proyecto web que construye el war que se va a desplegar en el servidor de aplicaciones glassfish:
En este archivo se configura el recurso jdbc a tarvés del cual se accederá a la base de datos y el pool de conexiones de la misma.
- Recurso jdbc
<resources>
<jdbc-resource enabled="true"
jndi-name="java:app/jdbc/BookStore"
object-type="user"
pool-name="BookBasico_pool"/>
...
</resources>
- Pool de conexiones
Para este ejemplo, la dase de datos que estamos utilizando es derby
. Esto se define en la propiedad datasource-classname
<resources>
...
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.ClientDataSource" name="BookBasico_pool" res-type="javax.sql.DataSource" >
<property name="User" value="APP"/>
<property name="Password" value="APP"/>
<property name="serverName" value="localhost"/>
<property name="PortNumber" value="1527"/>
<property name="DatabaseName" value="BookStore"/>
<property name="createDatabase" value="create"/>
</jdbc-connection-pool>
</resources>
Conexión a la base de datos desde Netbeans
Servicio de conexión a la base de datos desde Netbeans: