El código de Java puro simula el principio de caché de nivel 1 Hibernate, que es simple y fácil de entender.
La copia del código es la siguiente:
import java.util.arrayList;
import java.util.hashmap;
import java.util.list;
import java.util.map;
clase pública LevelOnEcache {
// Este objeto se usa para simular el caché de nivel 1 de hibernación
Mapa estático privado <Integer, Student> stus = new Hashmap <Integer, Student> ();
public static void main (string [] args) {
getStudent (1);
getStudent (1);
getStudent (1);
getStudent (2);
getStudent (2);
}
Public Static Student GetStudent (ID de entero) {
if (stus.containskey (id)) {
System.out.println ("Obtener datos de caché");
return stus.get (id);
} demás {
System.out.println ("Obtener datos de la base de datos");
Estudiante s = mydb.getstudentbyid (id);
// Ponga los datos obtenidos de la base de datos en el caché
stus.put (id, s);
regreso s;
}
}
}
// simular la base de datos
clase mydb {
Lista estática privada <Estudio> list = new ArrayList <Estudio> ();
estático{
Estudiante S1 = nuevo estudiante ();
s1.setName ("name1");
S1.setId (1);
Estudiante S2 = nuevo estudiante ();
s2.setName ("name2");
s2.setid (2);
Estudiante S3 = nuevo estudiante ();
s3.setName ("name3");
s3.setid (3);
// Inicializar la base de datos
list.add (S1);
list.add (S2);
list.add (S3);
}
// Proporcionar métodos de consulta pública en la base de datos
Public Static Student GetStudentByid (ID de entero) {
para (estudiante s: list) {
if (s.getid (). igual (id)) {
regreso s;
}
}
// Si no se puede encontrar la consulta, la devolución vacía
regresar nulo;
}
}
// objeto de dominio
Estudiante de clase {
ID de entero privado;
nombre de cadena privada;
Public Integer getId () {
ID de retorno;
}
public void setid (ID de entero) {
this.id = id;
}
public String getName () {
nombre de retorno;
}
public void setName (nombre de cadena) {
this.name = name;
}
}