純粋なJavaコードは、Hibernateレベル1キャッシュの原則をシミュレートします。これはシンプルで理解しやすいです。
コードコピーは次のとおりです。
java.util.arraylistをインポートします。
java.util.hashmapをインポートします。
java.util.listをインポートします。
java.util.mapをインポートします。
Public Class LevelOneCache {
//このオブジェクトは、冬眠レベル1キャッシュをシミュレートするために使用されます
private static Map <integer、sustent> stus = new hashmap <integer、sustent>();
public static void main(string [] args){
GetStudent(1);
GetStudent(1);
GetStudent(1);
GetStudent(2);
GetStudent(2);
}
Public Static Student GetStudent(整数ID){
if(stus.containskey(id)){
system.out.println( "キャッシュからのデータの取得");
stus.get(id);
} それ以外 {
system.out.println( "データベースからのデータの取得");
学生s = mydb.getStudentbyid(id);
//データベースから取得したデータをキャッシュに入れます
stus.put(id、s);
s;
}
}
}
//データベースをシミュレートします
クラスmydb {
private static list <Student> list = new ArrayList <Student>();
静的{
学生S1 = new Student();
s1.setname( "name1");
s1.setid(1);
学生S2 = new Student();
s2.setname( "name2");
S2.SetID(2);
学生S3 = new Student();
s3.setname( "name3");
s3.setid(3);
//データベースを初期化します
list.add(s1);
list.add(s2);
list.add(s3);
}
//データベースでパブリッククエリメソッドを提供します
Public Static Student getStudentById(integer id){
for(学生s:list){
if(s.getid()。equals(id)){
s;
}
}
//クエリが見つからない場合、返品は空です
nullを返します。
}
}
//ドメインオブジェクト
クラスの学生{
プライベート整数ID;
プライベート文字列名;
public Integer getId(){
IDを返します。
}
public void setid(整数ID){
this.id = id;
}
public string getName(){
返品名;
}
public void setName(string name){
this.name = name;
}
}