รหัส Java บริสุทธิ์จำลองหลักการแคชระดับไฮเบอร์เนตระดับ 1 ซึ่งง่ายและเข้าใจง่าย
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.arraylist;
นำเข้า java.util.hashmap;
นำเข้า java.util.list;
นำเข้า java.util.map;
ชั้นเรียนระดับสาธารณะ levelonecache {
// วัตถุนี้ใช้เพื่อจำลองแคชระดับไฮเบอร์เนต 1
แผนที่คงที่ส่วนตัว <จำนวนเต็ม, นักเรียน> stus = new hashmap <จำนวนเต็ม, นักเรียน> ();
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
getstudent (1);
getstudent (1);
getstudent (1);
getstudent (2);
getstudent (2);
-
นักเรียนคงที่สาธารณะ GetStudent (จำนวนเต็ม) {
if (stus.containskey (id)) {
System.out.println ("ดึงข้อมูลจากแคช");
return stus.get (id);
} อื่น {
System.out.println ("ดึงข้อมูลจากฐานข้อมูล");
นักเรียน s = mydb.getstudentbyid (id);
// ใส่ข้อมูลที่ได้จากฐานข้อมูลลงในแคช
stus.put (id, s);
กลับ s;
-
-
-
// จำลองฐานข้อมูล
คลาส mydb {
รายการคงที่ส่วนตัว <Tudent> list = new ArrayList <Tudent> ();
คงที่ {
นักเรียน S1 = นักเรียนใหม่ ();
s1.setName ("name1");
S1.SetId (1);
นักเรียน S2 = นักเรียนใหม่ ();
s2.setName ("name2");
S2.SetId (2);
นักเรียน S3 = นักเรียนใหม่ ();
s3.setName ("name3");
s3.setid (3);
// เริ่มต้นฐานข้อมูล
list.add (S1);
list.add (S2);
list.add (S3);
-
// ให้วิธีการสืบค้นสาธารณะในฐานข้อมูล
นักเรียนคงที่สาธารณะ GetStudentById (ID จำนวนเต็ม) {
สำหรับ (นักเรียน s: รายการ) {
if (s.getId (). เท่ากับ (id)) {
กลับ s;
-
-
// หากไม่พบการสืบค้นผลตอบแทนจะว่างเปล่า
คืนค่า null;
-
-
// วัตถุโดเมน
นักเรียนชั้นเรียน {
ID จำนวนเต็มส่วนตัว;
ชื่อสตริงส่วนตัว;
จำนวนเต็มสาธารณะ getId () {
return id;
-
โมฆะสาธารณะ setId (จำนวนเต็ม) {
this.id = id;
-
สตริงสาธารณะ getName () {
ชื่อคืน;
-
โมฆะสาธารณะ setName (ชื่อสตริง) {
this.name = ชื่อ;
-
-