hibernate的session对象核心方法注意的问题
1.session.save()方法
1).session.save()方法会使一个对象从临时状态转变为持久化状态。
2).session.save()方法会赋予持久化对象的OID属性一个ID值,以对应数据库该条数据。
3).在session.flush()被调用时,session.save()方法会发送一条insert SQL语句。
4).持久化对象的OID值不能被修改,尝试修改会抛出异常。
2.session.persist()方法
1).session.persist()和save()方法的区别在于,如果临时对象的OID属性已经有ID值了,则不会执行insert语句,而会抛出异常。save()方法会忽略这个已有的ID值继续insert,然后再根据生成的ID覆盖掉已有的ID。
3.session.get()和session.load()方法
1)两者都会查询一条数据,返回该数据的持久化对象。
2)session.get()方法在调用后立即返回持久化对象,session.load()方法会返回一个代理对象,在对象的方法属性被调用时,再初始化加载该对象,实现延迟加载。
3)session.load()的代理对象如果没能完成初始化,而session.close()方法被调用了。则尝试加载时会抛出异常。session.get()方法得到的持久化对象在session.close()后依然可以使用,只是对象状态发生了变化。
4)如果查询不到值,session.get()方法返回null,session.load()方法返回的代理对象在初始化时抛出异常。
hibernate的session对象核心方法注意的问题的更多相关文章
- Hibernate Session对象核心方法
1. 持久化对象的状态: 站在持久化的角度,Hibernate 把对象分为四种状态:持久化状态,临时状态,游离状态,删除状态 Session 的特定方法能使对象从一个状态转到另一个状态 临时对象: 在 ...
- Hibernate Session的delete()方法
本文介绍Hibernate Session的delete()方法.delete()方法用于从数据库中删除与Java对象对应的记录.对应游离对象和持久化对象,delete语句会做出不同的反应. AD: ...
- Hibernate中的session对象update方法的使用
使一个游离对象转变为持久化对象.例如以下代码在session1中保存了一个Customer对象,然后在session2中更新这个Customer对象: Customer customer = new ...
- Hibernate之Session对象的相关方法以及持久化对象的状态
一.持久化对象的状态 站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状 ...
- hibernate之Session对象
Session对象:数据库的核心对象 增删改查 ...java public class UserDao { public void addUser(User user) { //使用hibernat ...
- Hibernate区分不同对象的方法
1.关系数据库按主键区分不同记录. create table CUSTOMERS (ID int promary key not null, NAME varchar(15)); insert ...
- hibernate 关于session的update方法
先看写代码的方法: @Test public void testUpdate3() { Teacher t = new Teacher(); ...
- Hibernate中session的save方法问题
今天在使用session.save(),进行插入数据操作时,一直没有成功,也没有报错.后来发现是因为没有创建事务,提交事务的原因 你对flush和commit的意思没有理解到:1,flush代表刷新, ...
- Hibernate 通过 Session 操纵对象
Session 概述 •Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. •Session 具有 ...
随机推荐
- sql rank()函数
RANK() OVER([<partiton_by_clause>]) partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区. Order_b ...
- 浅谈JDBC编程
一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...
- DataList删除操作
<asp:DataList ID="fileList" runat="server" RepeatColumns="1" Repeat ...
- 【转】安装mysql 出现:Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
来源:http://blog.csdn.net/dapeng0112/article/details/37053407 本来初始化配置是这样的: scripts/mysql_install_db -- ...
- nfc相关
nfc普通读卡写卡按厂商API操作即可,但是牵扯到NDEF的读写就另当别论了,算是二次开放了,android手机有成熟的接口,.net也有一些,github上有一个,还没研究, https://git ...
- PhpStorm创建Drupal模块项目开发教程(2)
通常支持Drupal HOOK的文件为.module.首先我们需要在这里对它进行声明,以便索引,并且在代码完成中使用Ctrl+Space(空格)完成HOOK实现. Drupal HOOK调用,通常情况 ...
- wampserver 2.5多站点配置
wampserver2.5版本与之前老版本配置有区别,假设wamp安装在d:/wamp下.第一步:修改D:/wamp/bin/apache/apache2.4.9/conf/httpd.conf 文件 ...
- Oracle学习笔记(1)----忘记用户名的密码该如何找回
(1)在连接数据库之前需要打开如下服务: (2)如果忘记用户的密码 I:打开cmd窗口 II:键入命令:connect / as sysdba; III:alter user 用户名 identifi ...
- 生成javadoc
javadoc可以很方便的用来生成一些接口文档. 操作步骤: 1.export->javadoc 2.选择导出的位置 3.确定导出 常见异常: 1. 软件包 javax.servlet.http ...
- redis 使用
Redis 使用 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久 ...