分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

hibernate持久化类和一级缓存

发布时间:2023-09-06 02:17责任编辑:董明明关键词:缓存

持久化类编写规则

1.有无参构造函数。

2.属性不能被final修饰。

3.对外提供属性的get和set方法。

4.需要提供一个持久化OID对象唯一标识对象。

主键生成策略

 ???????????<!-- <generator class="native"/>包括sequence和 identity--> ???????????<!-- <generator class="increment"/>适用于单线程使用,采用hibernate主键生成策略,最大id加1成为新的id--> ??????????????<!--<generator class="identity"/>使用数据库底层主键生成策略,id自动增长,适用于mysql--> ?????????????<!--<generator class="sequence"/> 适用于oracle --> ???????????<!--<generator class="uuid"/> 适用于使用字符串当主键 --> ???????????<!--<generator class="assigned"/> 用户自定义主键生成策略 ,手动生成id-->

持久化类三种状态

1.瞬时态,没有OID标识,没有被Session管理。

2.持久态,有OID持久化标识,被Session管理。

3.托管态,有OID持久化标识,没有被Session管理。

hibernate的一级缓存

hibernate的一级缓存是session级别的缓存,随着session的创建而产生,随着session的清除而消失,一级缓存的作用是从内存中读取数据,而不需要从硬盘中读取数据,如果一个对象的标识在缓存中存在,下次获取数据从缓存中获取,插入数据如果对象已经存在,则不发送sql语句,如果不存在,需要发送sql语句。这是利用一级缓存的快照区实现的。

package hibernate;import java.io.Serializable;import org.hibernate.Session;import org.hibernate.Transaction;public class hibernateDemo3 { ??????public static void main(String[] args) { ???????Session session = hibernateUtils.openSession(); ???????Transaction transaction = session.beginTransaction(); ??????????????Customer customer1 = (Customer) session.get(Customer.class, 1l); ??????customer1.setCust_name("666"); ???????System.out.println(customer1); ???????????????transaction.commit(); ???????session.close(); ???????????????????????????}}

在第一次修改的时候,是发送了update语句,第二次执行的话快照区已经存在这个对象数据,就不会发送update语句。

hibernate持久化类和一级缓存

原文地址:https://www.cnblogs.com/yanqingguo/p/9745785.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved