hibernate一级缓存介绍与实践
来源:互联网 发布:即时语音翻译软件 编辑:程序博客网 时间:2024/06/06 16:33
1).hibernate一级缓存又称为“Session的缓存”。
Session内置不能被卸载,Session的缓存是事务范围的缓存(Session对象的生命周期通常对应一个数据库事务
或者一个应用事务)。
一级缓存中,持久化类的每个实例都具有唯一的OID。
2).一级缓存的管理:
evit(Object obj) 将指定的持久化对象从一级缓存中清除,释放对象所占用的内存资源,
指定对象从持久化状态变为脱管状态,从而成为游离对象。
clear() 将一级缓存中的所有持久化对象清除,释放其占用的内存资源。
contains(Object obj)判断指定的对象是否存在于一级缓存中。
flush() 刷新一级缓存区的内容,使之与数据库数据保持同步。
3)一级缓存应用:
save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。
get()和load()。当session对象调用get()或load()方法从数据库取出一个对象后,该对象也会被放入到session的缓中。
使用HQL和QBC等从数据库中查询数据。
4)hibernate一级缓存(默认开启)演示
(1)创建Java项目,整个项目如图所示
(2)创建实体类Book(id,name),并且创建book.hbm.xml映射文件
(3)加载hibernate1.cfg.xml文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<!-- 配置数据库信息 -->
<!-- 数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 链接数据库 -->
<property name="connection.url">jdbc:MySQL://127.0.0.1:3306/zk</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">1111</property>
<!-- 其他配置 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">false</property>
<!--
create:先删除,再创建
update:如果表不存在就创建,不一样就更新,一样就什么都不做。
create-drop:初始化时创建表,SessionFactory执行close()时删除表。
validate:验证表结构是否一致,如果不一致,就抛异常。
-->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/lqq/dto/book.hbm.xml"/>
</session-factory>
</hibernate-configuration>(4)测试类Test1
//加载hibernate1.cfg.xml文件并创建SessionFactory
Configuration conf = new Configuration();
SessionFactory factory = conf.configure("hibernate1.cfg.xml").buildSessionFactory();
//创建session
Session session = factory.openSession();
//获取
Book book1 = (Book) session.get(Book.class, 1);
System.out.println(book1);
Book book2 = (Book) session.get(Book.class, 1);
System.out.println(book2);
//关闭session
session.close();
//关闭factory
factory.close();(5)效果图(注意: 输出结果中只有一条select sql语句)
- hibernate一级缓存介绍与实践
- Hibernate一级缓存与二级缓存
- Hibernate一级缓存与二级缓存
- Hibernate---一级缓存与二级缓存
- Hibernate一级缓存与二级缓存
- hibernate一级缓存与快照
- hibernate三级缓存介绍与实践
- Hibernate中一级缓存与二级缓存
- Hibernate一级缓存与二级缓存的解析
- Hibernate的一级缓存与二级缓存
- hibernate的一级缓存与二级缓存
- Hibernate一级缓存【Hibernate】
- Hibernate的一级缓存
- hibernate一级缓存(转)
- Hibernate一级缓存
- Hibernate一级缓存详解
- Hibernate一级缓存 & 二级缓存
- hibernate一级缓存
- C++ iomanip
- BeautifulSoup库入门
- 一周搞定期末考系列之《算法分析与设计》
- ActiveMQ中消费者是如何接收消息的
- h264 I,P,B帧和PTS,DTS的关系
- hibernate一级缓存介绍与实践
- caffe: make all j4 错误:Makefile.config:95: *** missing separator. Stop.
- 记录记录复习C语言的时光
- TIME_WAIT状态原理
- JVM调优总结(八)-典型配置举例2
- GitHub上README.md教程
- 我的第一只小爬虫
- 01背包问题--C语言代码
- 查看CentOS版本方法