出国留学网

目录

全国二级计算机等级考试Java知识点

字典 |

2017-02-10 10:09

|

【 liuxue86.com - 计算机二级 】

  1.Hibernate框架的特性

  1)一级缓存

  session对象级别的缓存,利用该session取出的对象会放到缓存中.在后续查询时,首先去缓存中寻找,没有再去数据库寻找.

  session缓存区在session关闭后销毁.session复杂维护缓存区中对象的状态.

  在使用时,为了更好发挥一级缓存,需要保障同一个线程处理中,使用同一个Session对象.

  a.使用ThreadLocal对SessionUtil进行改造,将Session对象与ThreadLocal绑定.

  public class HibernateUtil {

  private static ThreadLocal tl=new ThreadLocal();

  private static Configuration conf;

  private static SessionFactory factory;

  static {conf=new Configuration();factory=conf.buildSessionFactory();}

  public static Session getSession(){ Session session=tl.get();

  if(session==null){ session=factory.openSession(); tl.set(session);}return session; }

  public static Session closeSession(){ Session session=tl.get(); if(session!=null){session.close();tl.set(null);

  }return session;}}

  b.Hibernate3之后的新版本,可以使用以下方法

  首先在hibernate.cfg.xml中添加配置

  thread

  之后使用sessionFactory.getCurrentSession()方法获取Session

  注意:在使用此session时,必须将session操作封装在一个transaction

  一级缓存的管理:

  session.evict(obj);将obj对象从当前session的一级缓存中清除.

  session.clear():清除当前session的一级缓存.

  2)延迟加载

  当获取一个实体对象后,实体对象并没有立刻发送SQL语句,去数据库加载数据.而是在调用对象的getXXX()方法时采取加载数据.

  支持延迟加载的方法:session.load(),query.iterator().延迟加载方法返回的对象类型,是动态代理类型.

  session.get()和session.load()方法功能是按主键做条件查询数据,区别

  如下:

  a.get()方法不支持延迟加载,load()方法支持

  b.如果数据表中没有符合的记录,get()方法返回null,load()抛异常

  c.如果数据表中有符合的记录,get()返回的是实体类型对象,load()返回的是动态代理类型对象.

  在使用时,需要注意以下事项:

  a.使用延迟加载的API后,避免过早的关闭Session.

  LazyInitializationException: could not initialize proxy - no Session

  b.根据需要选择延迟加载和非延迟加载API

  -----------------了解----------------------

  Hibernate延迟加载机制:利用动态生成代理类型机制生成一个动态代理类,并重写对象的getXXX()方法,当调用get方法时,触发SQL查询,去数据库加载数据.

  Hibernate动态生成代理类型机制:

  以前编写程序:

  a.编写一个类源码

  b.调用编译器将源码编译成class字节码

  c.类加载器将字节码文件载入虚拟机内容

  d.虚拟机调用字节码文件的方法,解释运行

  Session.load()等延迟方法返回的类型是Foo$Enhancer$CGLIB....,

  这些类型是Hibernate框架利用程序在内容中动态生成并编译的类型.

  上述功能,是Hibernate调用asm.jar,cglib-2.1.3.jar工具包完成的.

  asm.jar主要用于在内存中动态和编译生成一个类

  cglib.jar是基于asm.jar,对其扩展,在内存中生成一个代理类型.该代理类是原类型的一个子类.

  3)Hibernate中对象的状态

  在Hibernate使用中,对象的状态有以下三种

  a.临时对象 : 在程序中使用new方式创建的对象

  b.持久对象 : 在程序中与session对象关联,由session负责管理的对象.

  处于session缓存中的对象都是持久对象

  对象的持久性:指的是对象的数据状态在事务提交时可以与数据库保持同步更新.

  session.flush();//将持久对象与数据库同步

  tx.commit();//事务提交,提交前默认也调用session.flush()

  c.托管对象 : 在程序中如果session.close()后,session负责管理的持久对象将成为托管对象.垃圾回收器负责回收临时和托管状态,持久状态不能回收.

  想了解更多计算机二级网的资讯,请访问: 计算机二级

本文来源:https://jsj.liuxue86.com/a/3092227.html
延伸阅读
    想必要考试的考生,对快捷键还是有敏感的,快捷键不仅使你考试能做题快一些,在平时设计网站时也是有很大的帮助的,在这里预祝即将考试的考生
2019-01-02
漂亮的Flash动画人人喜欢,不过制作起来的确有一些技术难度。你知道吗,Dreamweaver作为一个网页制作工具,还可以创建好玩的Flash相册。小编整理了一些Flash相册的资
2019-01-02
    滚动字幕会让很多人感到兴奋,特别是第一次使用滚动字幕时,会爱不释手。现在做一个详细的方案,让你更全面地了解一下。小编整理了一些滚动字
2019-01-02
    我们都想知道在学习计算机语言中的C语言,最重要的就是字符串了,小编整理了关于C语言的一些知识点,对你的计算机考试会有帮助的,想了解更
2019-01-02
你准备好计算机等级考试了么?小编为大家提供“2018年12月计算机二级Java冲刺题及答案3”供广大考生参考,希望帮到您!更多计算机等级考试的资讯请关注我们网站的更新哦!2018年
2018-11-28
本网站计算机考试栏目小编为考生们整理了“2018年12月计算机二级Java冲刺题及答案2”,希望有所帮助,更多计算机等级考试信息请关注本网站的及时更新哦。祝同学们金榜题名!2018
2018-11-28
计算机等级考试栏目小编精心为您收集整理了《2018年12月计算机二级Java冲刺题及答案1》,希望给您带来帮助!更多精彩内容尽在本站,请持续关注。祝您考试顺利哦!2018年12月计
2018-11-28
三层模式是体系结构模式,MVC是设计模式,考生们应该常见吧,小编为你整理了一些关于JavaBean的资料,供程序员参考,希望能对你有所帮助!计算机二级考试-Web前端程序设计(Ja
2019-01-02