java模拟hibernate一级缓存示例分享
发布时间:2023-06-18 08:43:55
纯Java代码模拟Hibernate一级缓存原理,简单易懂。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LevelOneCache {
//这个对象就是用来模拟hibernate一级缓存的
private static Map<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(Integer id){
if(stus.containsKey(id)){
System.out.println("从缓存中取数据");
return stus.get(id);
} else {
System.out.println("从数据库中取数据");
Student s=MyDB.getStudentById(id);
//将从数据库中取得的数据放入缓存
stus.put(id, s);
return s;
}
}
}
//模拟数据库
class MyDB{
private static List<Student> list=new ArrayList<Student>();
static{
Student s1=new Student();
s1.setName("Name1");
s1.setId(1);
Student s2=new Student();
s2.setName("Name2");
s2.setId(2);
Student 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(Student s:list){
if(s.getId().equals(id)){
return s;
}
}
//查询不到则返回空
return null;
}
}
//domain对象
class Student{
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


猜你喜欢
- 本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件。这里的PPT幻灯片可以是.ppt/.pptx/.pp
- 可能我们用惯了 Newtonsoft.Json.dll 等第三方的类库来实现序列化等类似的操作,但是有时只是简单的用一下,感觉没必要那么费事
- 1. 实现原理将key映射到 2^32 - 1 的空间中,将这个数字的首尾相连,形成一个环计算节点(使用节点名称、编号、IP地址)的hash
- Android短信高效备份这篇文章,承接上一篇。使用高效的方式备份短信——xml序列化器。存储短信,要以对象的方式存储。首先创建javabe
- java语言是一种面向对象的程序设计语言吗java语言是面向对象的程序设计语言支持部分或绝大部分面向对象特性(类和实例、封装性、继承、多态)
- 面试官:请问StringBuffer和StringBuilder有什么区别?这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面
- 我这一次讲使用scroll实现弹性滑动,我不会只有一个例子就说完,因为写文章的时候我也在学习,我分几次讲完吧。首先上一段代码,private
- 最近公司在新版本上有一个需要,要在首页添加一个滑动效果,具体就是仿照X宝的商品详情页,拉到页面底部时有一个粘滞效果,如下图X东的商品详情页,
- GUI全程是Graphical User Interface,即图形用户界面。顾名思义,GUI就是可以让用户直接操作的图形化界面,包括窗口、
- 1.我做的是一个动态表格,就是在输入框里每输入一次数据并点击“添加”按钮,表格中就会新增一行记录。<table id="st
- 1.上原图 前几天在 Hencoder 征稿看到的Filpboard 里的的动画效果:Filipboard.gif先bb一句:在看本文的同时
- 一直使用的是FastJson,感觉还不错,很方便。看了一段别人的分析,觉得很有道理。为什么要使用Fastjson,其实原因不需要太多,喜欢就
- 前言本篇开始讲解音频编辑的具体操作,从相对简单的音频裁剪开始。要进行音频裁剪,我的方案是开启一个Service服务用于音频裁剪的耗时操作,主
- 腾讯TBS浏览器服务我们都知道,在Android开发中,经常会用到Webview,而且WebView是出了名的坑的,各种bug。这时候腾讯老
- 一.类与接口的区别类:描述了一个实体,包括实体的状态,也包括实体可能发出的动作。接口:定义了一个实体可能发出的动作。但是只是定义了这些动作的
- Json格式在后台服务中的重要性就不多说了,直入正题。首先引入pom文件,这里使用的是1.2.83版本<dependency>
- 短网址,忽然一下子就冒出来的东西,长长的一个URL,提交过去,出来就只有短短的一个URL了,看起来似乎挺神奇,其实简单分析一下,明白其中的原
- 效果明细用Popup实现的,录gif时,Popup显示不出来,不知道为什么,所以静态图凑合看吧大体思路图表使用Arc+Popup实现图表分为
- Spring Boot整合Spring Data JPA1)加入依赖<dependency> <groupId
- 一、swagge简介前后端分离:后端︰后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】前后端通过API进行交互