Hibernate_Notes_2_helloworld_详解_及session一级缓存
来源:互联网 发布:js对话框图片 编辑:程序博客网 时间:2024/06/04 19:36
1.创建持久化java类(model)
1.提供一个无参的构造器(反射)
2.提供一个标识属性(OID)
映射为数据库表的主键字段
3.get/set
2.创建对象-关系映射文件
<class name="com.test.hibernate.helloword.News" table="NEWS"> //table=创建的表名
<id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键的生成方式,native:使用数据库本地方式 --> <generator class="native" /> </id>
<property name="title" type="java.lang.String"> //name是model里的属性名 type类型 <column name="TITLE" /><span style="white-space:pre"></span>//列名 </property>
3.创建Hibernate配置文件
3.通过API编写访问数据库的代码(重点)
1.Configuration类负责管理Hibernate的配置信息(加载cfg.xml)1)创建Configuration的方式
推荐使用XML文件方式
Configuration cfg = new Configuration().configure();
以上默认识别 /hibernate.cfg.xml
其他方法:查
2)SessionFactory接口
一旦构造完毕,即被富裕特定的配置信息
是生成Sesisson的工厂
构造sf很消耗职员,一般情况下一个应用只初始化一个sf对象
Hibernate4新郑了serviceRegistry接口,所有基于h的配置或者服务都必须统一向这个sr注册
3)主要是以下步骤
<span style="white-space:pre"></span>//1.创建一个sessionFactory对象SessionFactory sessionFactory = null;
<span style="white-space:pre"></span>//创建configuration对象Configuration configuration = new Configuration().configure();
<span style="white-space:pre"></span>//创建serviceRegistry对象ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
<span style="white-space:pre"></span>//创建sessionfactory对象sessionFactory = configuration.buildSessionFactory(serviceRegistry);2.session接口
取得持久化对象的方法:get()/load()
持久化对象都得保存,更新和删除:
save(),update(),delete()
管理session的方法:isOpen(),flush(),clear()..等等
3.Transaction事务
Transaction tx = session.beginTransaction();
常用方法commit();等
4.session操纵对象详解
session一级缓存可以减少Hibernate应用程序访问数据库的频率
flush():使数据表中的记录和session缓存中对象的状态保持一致,为了保持一致,则可能会发送对应的sql语句(一样就不发送)
1.在Transaction的commit()方法中:先调用session的flush方法,再提交事务
2.flush() 方法可能会发送sql语句,但不会提交事务(为了缓存与数据库保持最新的一致),
3.在未提交事务或显式的调用session.flush()方法之前,也有可能会进行flush()操作
1)执行hql或者qbc查询,查询要求是最新的状态,这样必须要先flush(),以得到数据表的最新的记录
2)若记录的ID是由底层数据库自增的方式生成的,则在调用save方法后,就会立即发送insert语句
因为save方法后,必须保证对象的ID是存在的!
refresh():数据库——>缓存 更新 会发送一条select语句(不过有数据库的隔离级别 需要设置)
会强制发送select语句,以使session缓存中的状态和数据表中记录保持一致!
<property name="connection.isolation">2</property>
clear():清理缓存
- Hibernate_Notes_2_helloworld_详解_及session一级缓存
- Hibernate一级缓存详解及优化
- hibernate session 一级缓存
- Session的一级缓存
- session的一级缓存
- hibernate一级缓存session
- hibernate一级缓存(session缓存)
- hibernate4的session一级缓存
- hiberante中的一级缓存Session
- 8.Session的一级缓存
- Hibernate Session一级缓存理解
- 关于session的一级缓存
- hibernate 的session一级缓存
- Hibernate一级缓存详解
- Hibernate一级缓存详解
- Hibernate一级缓存详解
- Hibernate一级缓存详解
- hibernate一级缓存详解
- 指向函数的指针
- iOS引导页
- 用sqlite是出现Unable to prepare statement: 1警告
- Android 如何将一个Activity设置成窗口样式
- 【问底】王帅:深入PHP内核(二)——SAPI探究
- Hibernate_Notes_2_helloworld_详解_及session一级缓存
- Caffe框架安装类问题整理
- Linux设备驱动之I/O端口与I/O内存
- Arcgis重分类无法赋新值为小数
- Wince 添加蓝牙设备
- 有关html5、javascript工具、css框架以及jquery插件的前端专题,收藏以供今后使用
- 坐在马桶上看算法:快速排序
- Linq的Bug收集
- 协定需要双工,但是绑定“WSHttpBinding”不支持它或者因配置不正确而无法支持它