Configurar objetos y regiones que se pueden almacenar en caché en Hibernate Cache
El siguiente paso es configurar objetos y regiones almacenables en caché utilizando primero el mapeo XML o las anotaciones de caché de Hibernación y luego editando el ncache-hibernar.xml archivo de configuración como se detalla a continuación.
Requisitos previos para configurar la caché de hibernación
Importe los siguientes paquetes para utilizar las anotaciones de Yakarta:
import jakarta.persistence.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import java.io.Serializable;
Configurar objetos almacenables en caché mediante un archivo de asignación XML
Habilitar el uso de un caché de segundo nivel no almacena en caché el objeto de cada clase de forma predeterminada. En cambio, las clases que deben almacenarse en caché se marcan como almacenables en caché como parte del mapeo de clases (.hbm.xml) archivo. El siguiente es un archivo de mapeo de muestra. pedidos.hbm.xml de hibernar caché con configuración de almacenamiento en caché:
<hibernate-mapping package="com.alachisoft.ncache.sample">
<class name="Orders" table="Orders">
<cache usage="nonstrict-read-write" region="OrderRegion"/>
<id name="orderID" type="int">
<column name="OrderID"/>
<generator class="assigned"/>
</id>
<property name="orderDate" type="date">
<column name="OrderDate"/>
</property>
<property name="shippedDate" type="date">
<column name="ShippedDate"/>
</property>
<property name="shipAddress" type="string">
<column name="ShipAddress"/>
</property>
<property name="shipCountry" type="string">
<column name="ShipCountry"/>
</property>
</class>
</hibernate-mapping>
Miembros | Descripción |
---|---|
Región | Especifica el nombre de la región de caché de segundo nivel que se utilizará para los objetos de esta clase. Si no se especifica ninguna región, se utilizará un nombre de clase completo como nombre de región con configuraciones de región predeterminadas. |
Uso | Especifica la estrategia de simultaneidad de almacenamiento en caché que se utilizará para esta clase. Hibernate permite las siguientes tres estrategias de concurrencia para el almacenamiento en caché: |
Configurar objetos almacenables en caché mediante anotaciones de caché de Hibernate
Hibernate introdujo un nuevo método para definir asignaciones desde la versión 3.5 en adelante. Este método actúa como un reemplazo o una adición al antiguo método de mapeo XML. Este método se conoce como Anotaciones de Hibernate.
El siguiente ejemplo de código demuestra cómo puede utilizar anotaciones de hibernación en su caché de hibernación.
@Entity
@Table(name = "Products")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "ProductRegion")
public class Product implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ProductID")
private int productId;
@Column(name = "ProductName")
private String productName;
@Column(name = "SupplierID")
private int supplierID;
@Column(name = "CategoryID")
private int categoryID;
@Column(name = "QuantityPerUnit")
private String quantityPerUnit;
@Column(name = "UnitPrice")
private double unitPrice;
@Column(name = "UnitsInStock")
private int unitsInStock;
@Column(name = "UnitsOnOrder")
private int unitsOnOrder;
@Column(name = "ReorderLevel")
private int reorderLevel;
@Column(name = "Discontinued")
private boolean discontinued;
// Getters
public int getProductId() {
return productId;
}
public String getProductName() {
return productName;
}
public int getSupplierID() {
return supplierID;
}
public int getCategoryID() {
return categoryID;
}
public String getQuantityPerUnit() {
return quantityPerUnit;
}
public double getUnitPrice() {
return unitPrice;
}
public int getUnitsInStock() {
return unitsInStock;
}
public int getUnitsOnOrder() {
return unitsOnOrder;
}
public int getReorderLevel() {
return reorderLevel;
}
public boolean isDiscontinued() {
return discontinued;
}
// Setters
public void setProductId(int productId) {
this.productId = productId;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setSupplierID(int supplierID) {
this.supplierID = supplierID;
}
public void setCategoryID(int categoryID) {
this.categoryID = categoryID;
}
public void setQuantityPerUnit(String quantityPerUnit) {
this.quantityPerUnit = quantityPerUnit;
}
public void setUnitPrice(double unitPrice) {
this.unitPrice = unitPrice;
}
public void setUnitsInStock(int unitsInStock) {
this.unitsInStock = unitsInStock;
}
public void setUnitsOnOrder(int unitsOnOrder) {
this.unitsOnOrder = unitsOnOrder;
}
public void setReorderLevel(int reorderLevel) {
this.reorderLevel = reorderLevel;
}
public void setDiscontinued(boolean discontinued) {
this.discontinued = discontinued;
}
public Product() {
// Default constructor required by Hibernate
}
}
Anotaciones | Descripción |
---|---|
Entidad | Esta anotación marca una clase como Entity Bean. Esta clase debería tener al menos un alcance de paquete. |
hibernación.anotaciones.caché | Esta anotación indica que el resultado de invocar un método (o todos los métodos de una clase) se puede almacenar en caché. |
Mesa | Esta anotación le permite definir los detalles de la tabla que se utilizará para conservar la entidad en la base de datos. |
Id | La clave principal de su Entity Bean está anotada con la anotación @Id. Dependiendo de la estructura de su tabla, puede ser un solo campo o una combinación de varios campos. |
valor generado | Esta anotación se utiliza para generar automáticamente los valores de clave principal (@Id). |
Columna | Esta anotación especifica las propiedades de la columna a la que se asignará una propiedad o campo. Tiene los siguientes atributos: |
Consulte las Documentación de Hibernate para obtener más detalles sobre las anotaciones de Hibernate y las estrategias de almacenamiento en caché.
Cómo configurar regiones de caché
Hibernate usa regiones de caché para almacenar objetos. NCache permite configurar regiones de caché con diferentes propiedades. Para este propósito, NCache tiene un archivo de configuración llamado ncache-hibernar.xml, que contiene todas las configuraciones de la región y otras configuraciones relacionadas utilizadas por NCache. Puede colocar este archivo en el directorio raíz de la aplicación o en la carpeta de configuración del NCache Directorio de instalación.
A continuación se muestra una muestra ncache-hibernar.xml archivo de configuración:
<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
<cache-regions>
<region name="ProductRegion" cache-name="demoCache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
<region name="OrderRegion" cache-name="demoCache" priority="Normal" expiration-type="Sliding" expiration-period="8"/>
<region name="DefaultRegion" cache-name="demoCache" priority="default" expiration-type="None" expiration-period="0"/>
</cache-regions>
<database-dependencies>
<dependency entity-name="Products" type="oledb" sql-statement="SELECT ProductID FROM Products WHERE ProductID ='?';" cache-key-format="Products#[pk]" connection-string="Provider=SQLOLEDB;Data Source=20.200.20.40,1433;Initial Catalog=Northwind;User ID=john;Password=1234;"/>
<dependency entity-name="Orders" type="oledb" sql-statement="SELECT OrderID FROM Orders WHERE OrderID ='?';" cache-key-format="Orders#[pk]" connection-string="Provider=SQLOLEDB;Data Source=20.200.20.40,1433;Initial Catalog=Northwind;User ID=john;Password=1234;"/>
</database-dependencies>
</application-config>
</configuration>
aplicación-config: Esta sección le permite especificar la configuración para el uso de NCache para una aplicación particular. Se pueden especificar múltiples configuraciones de aplicaciones en ncache-hibernar.xml. Cualquier aplicación de Hibernate utilizará una de las configuraciones especificadas según el ID de aplicación especificado en el archivo de configuración de Hibernate. Las siguientes son las opciones configurables en la sección de configuración de la aplicación.
Miembros | Descripción |
---|---|
ID de aplicación | Esta opción le permite especificar el ID único para el actual aplicación-config. Esta ID se utiliza para seleccionar la configuración adecuada para una aplicación en particular. |
habilitar-caché-excepción | Identifica si las excepciones, si ocurrieron en NCache, se propagará al proveedor de Hibernate. |
nombre-región-predeterminado | Permite al usuario especificar una región predeterminada para la aplicación. Si no se encuentran las configuraciones de una región en particular, se utilizarán las configuraciones de la región predeterminada. La configuración de la región predeterminada especificada debe existir en la sección región de caché. |
Sensibilidad a mayúsculas y minúsculas | Esta opción permite al usuario especificar si las claves de caché distinguirán entre mayúsculas y minúsculas o no. Esta opción debe configurarse según la base de datos utilizada. Si la base de datos distingue entre mayúsculas y minúsculas, establezca esta opción en verdadero; de lo contrario, en falso. |
cache-regiones | Esta sección le permite configurar múltiples regiones de caché para la aplicación Hibernate. La configuración de cada región se especifica en la etiqueta de región. |
región | Esta etiqueta contiene las configuraciones para una región en particular. Las siguientes opciones se pueden configurar para cualquier región en particular. Nombre: Cada región se identifica por su nombre. El nombre de la región debe ser único. nombre de caché: Esta opción permite al usuario especificar NCacheEl nombre de la caché que se utilizará en esta región. prioridad: La prioridad que desea utilizar para los elementos almacenados en caché. Los valores posibles son: Default Low BelowNormal Normal AboveNormal High NotRemovable tipo de caducidad: Esta opción permite al usuario especificar el tipo de vencimiento para cualquier artículo en esta región. Los valores posibles son absoluto/deslizante/ninguno. período de caducidad: Esta opción permite al usuario especificar el período de vencimiento si está configurado el vencimiento absoluto/deslizante. Su valor debe ser mayor que 0. Las unidades predeterminadas son segundos. |
Dependencias de la base de datos | Esta sección le permite especificar las dependencias de la base de datos para la aplicación actual de Hibernate. dependencia: Cada dependencia se configura en una etiqueta de dependencia. Puede configurar varias etiquetas para varias dependencias. Las siguientes opciones se pueden configurar para cada dependencia. nombre de la entidad: Las dependencias se agregan según el nombre completo de las clases. Esta opción permite al usuario especificar el nombre de la clase a la que agregar la dependencia actual. Cualquier entidad puede tener un máximo de una dependencia. tipo: Esta opción permite al usuario especificar el tipo de dependencia de la base de datos. Los valores posibles son Oracle/oledb. desde el NCache El proveedor usa la cadena de conexión especificada en la configuración de Hibernate, use el tipo de dependencia apropiado para la cadena de conexión. instrucción sql: Permite al usuario especificar declaraciones SQL para usar en la construcción. NCachedependencia de la base de datos. formato de clave de caché: Esta opción configura el formato de clave de caché para cualquier elemento del tipo de entidad actual. El formato de clave de caché debe incluir "[pk]", que será reemplazado por la clave principal del registro. También puede incluir "[en]", que se reemplazará con el nombre de la entidad. El valor predeterminado del formato de clave de caché es "[en]#[pk]". Se debe utilizar el mismo formato de clave de caché al escribir los activadores de la base de datos en caso de dependencia de la base de datos OleDb. Ver NCache ayuda para escribir activadores de bases de datos para la dependencia de OleDb. separador de clave compuesta: Si los registros de la entidad actual tienen una clave compuesta como clave principal, la clave de caché se forma combinando todas las claves separadas por el separador de clave compuesta. El separador de claves compuesto debe tener una longitud de un carácter. Su valor predeterminado es "$". |
Vea también
Inicializar caché
Agregar/Actualizar en Caché
Caché de primer nivel de Hibernate
Configurar la aplicación Hibernate
Usar el almacenamiento en caché de consultas