java模拟hibernate一级缓存示例分享_java

纯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;
 }
}

时间: 2024-12-26 21:33:02

java模拟hibernate一级缓存示例分享_java的相关文章

java的nio的使用示例分享_java

Java NIO(New Input/Output)--新的输入/输出API包--是2002年引入到J2SE 1.4里的.Java NIO的目标是提高Java平台上的I/O密集型任务的性能.过了十年,很多Java开发者还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2).NIO和NIO.2对于Java平台最大的贡献是提高了Java应用开发中的一个核心组件的性能:输入/输出处理.不过这两个包都不是很好用,并且它们也不是适用于所有的场景.如果能

java使用xpath解析xml示例分享_java

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 XPath 的提出的初衷是将其作为一个通用的.介于XPointer与XSL间的语法模型.但是 XPath 很快的被开发者采用来当作小型查询语言. XPathTest.java 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java

java集合求和最大值最小值示例分享_java

复制代码 代码如下: package com.happyelements.athene.game.util; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; import com.google.common.collect.Lists; /** * Math工具类 *  * @version 1.0 * @since 1.0 */public class M

java控制台输出数字金字塔示例分享_java

复制代码 代码如下: /*Java  *Author: NealFeng at oschina.net *License: GPLv2+ *Time: 2014/1/17 * *在控制台输出数字金字塔: *                   1 *               1   2   1 *           1   2   4   2   1 *       1   2   4   8   4   2   1 *   1   2   4   8  16   8   4   2  

java打印当前方法名示例分享_java

在C与C++中可以这样打印当前函数名: 复制代码 代码如下: printf("%s",__func__); 但在Java没有此说法,一切即对象,得从某个对象中去获取,可分为两种方式: 第一种:通过Thread类来获取. 复制代码 代码如下: System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());System.out.println(Thread.currentThread().getS

java使用jdbc操作数据库示例分享_java

package dao; import java.sql.*; public class BaseDao {  //oracle// private  static final String Dirver="oracle.jdbc.driver.OracleDriver";// private  static final String URL="jdbc:oracle:thin:@localhost:1521:XE";// private  static final

java使用des加密解密示例分享_java

复制代码 代码如下: import java.security.Key;import java.security.SecureRandom;import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvPar

java实现八皇后问题示例分享_java

问题描述:将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有任何两个皇后在同一行.同一列或者同一对角线上)如图所示   在本文中,对于两道题采用了稍微不同的解决方式,但都使用的是一维数组.6.20中,要求求出一种有效布局,我建立了一个 有八个元素的一位数组,通过随意打乱数组的值,通过值与下标的比较,直至得出一个有效布局:6.22中,要求求出所有有效布局,这里我使用了八进制数,遍历了  从001234567-076543210的所有数字,通过将其转化为八进制字符串,每位与其下标相比较,输出满

java使用swt显示图片示例分享_java

复制代码 代码如下: import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell; public class ImagesHelloWorld {  public static