Conceptos Esenciales de Persistencia Java con JDO y DataNucleus
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,43 KB
Conceptos Fundamentales de Persistencia en Java
Anotaciones JDO Esenciales
@PersistenceCapable(detachable="true")
: Anotación que se aplica a clases para indicar que son persistentes y pueden ser desasociadas de la sesión de persistencia.@PrimaryKey
: Anotación que indica que el atributo inmediatamente debajo será la clave primaria de la tabla en la base de datos.@Join
: Anotación utilizada para el mapeo de una tabla intermedia, encargada de gestionar relaciones uno a muchos (1-N) o muchos a muchos (N-M).
Configuración de Atributos Persistentes con @Persistent
La anotación @Persistent
permite configurar el comportamiento de los atributos persistentes:
mappedBy
: Indica el nombre del atributo definido en el otro extremo de la relación. Es crucial para establecer relaciones bidireccionales.dependentElement
: Si se establece atrue
, indica que si el elemento donde se aplica esta anotación es borrado, los elementos relacionados en el otro extremo se borrarán automáticamente. Esto se conoce como "On Delete Cascade".defaultFetchGroup="true"
: Hace una variable persistente y asegura que, al realizar una consulta a la clase que contiene dicha variable, el objeto obtenido incluya automáticamente esa variable. Esto optimiza la recuperación de datos.
Implementación de Comunicación RMI (Remote Method Invocation)
Para implementar una comunicación RMI en Java, se deben seguir estos pasos:
- En la interfaz del servicio remoto, añadir
extends Remote
. - En la clase que implementa el servicio remoto, añadir
extends UnicastRemoteObject implements "NombreDeLaInterfaz"
.
Requisitos para Clases Persistentes con JDO
Para designar una clase como persistente utilizando la tecnología JDO, es necesario añadir las siguientes anotaciones:
- Encima de la declaración de la clase:
@PersistenceCapable
. - Encima del atributo que actuará como clave primaria:
@PrimaryKey
.
Targets de DataNucleus en build.xml
En el archivo build.xml
, DataNucleus utiliza targets específicos para la gestión de la persistencia:
enhancer
: Se utiliza para procesar y compilar los objetos persistentes, inyectando el código necesario para la persistencia.schematool
: Permite crear, actualizar o eliminar las tablas y relaciones en la base de datos, basándose en el modelo de objetos JDO.
Ejemplo de Creación de una Clase JDO (DAO)
A continuación, se muestra un ejemplo básico de cómo definir una clase persistente con JDO:
@PersistenceCapable(detachable="true")
public class Usuario {
@PrimaryKey
private String email;
@Join
@Persistent(mappedBy = "usuarios", defaultFetchGroup = "true")
private List<Direccion> direcciones; // Ejemplo de relación 1-N o N-M
// Otros atributos y métodos (getters, setters, constructores, etc.)
}
Nota: El tipo de la lista (List<Direccion>
) es un ejemplo y debe ser ajustado según la relación específica.
RMI y Service Locator
La tecnología RMI a menudo se integra con patrones como el Service Locator para facilitar la búsqueda y el acceso a servicios remotos.
Flujo de Trabajo para el Desarrollo y Despliegue con JDO y Bases de Datos
Este es un resumen de los componentes y pasos típicos en un proyecto que utiliza JDO y una base de datos relacional:
- Código de los objetos persistentes (H): Codificación Java de los objetos que se almacenarán en la base de datos.
- Anotaciones JDO (I): Sentencias que se incluyen en el código fuente de los objetos persistentes para definir el mapeo objeto-relacional.
- Task
javac
(C): Tarea Ant para la compilación del código fuente Java. - Task
enhancer
(A): Tarea Ant relacionada con JDO para el proceso del código compilado de las clases que incorporan anotaciones JDO. Incluye en los ficheros compilados el código específico JDBC de acceso a la base de datos. - Iniciar el servidor MySQL (J): Tarea de activación del servidor de base de datos.
- Sentencia
create schema
(G): Sentencia SQL para la creación de la base de datos (esquema) en el servidor de base de datos. - Sentencia
create user
(F): Sentencia SQL para la creación de un usuario en el servidor de base de datos. - Sentencia
grant
(E): Sentencia SQL para otorgar permisos sobre una base de datos específica a un usuario en el servidor de base de datos. - Task
schematool
(D): Tarea Ant relacionada con JDO para la creación de tablas y relaciones en la base de datos, basándose en el modelo de objetos persistentes. - Task
java
(B): Tarea Ant para la ejecución de una clase que posee el métodomain()
, típicamente para iniciar la aplicación.