hibernate学习 博客分类: hibernate
程序员文章站
2024-03-14 23:57:11
...
持久化对象操作:
session的缓存
session的save()方法持久化一个对象时,该对象会被放入缓存中。
session的load()方法会先判断对象是否在缓存中,再去数据库中查询。
session的close()方法会清空缓存。
当session调用commit()方法时,首先清理缓存,然后向数据库提交事务。所以当你连续对对象的一个属性作操作时,只会执行一条update语句
session的flush()方法会清理缓存,执行一系列的SQL语句,但不会提交事务
hibernate中java对象的状态
transient瞬时,new创建,没有被持久化,不处于缓存中
persistent持久化,已经持久化,加入到缓存中
detached游离,已经持久化,不处于缓存中
new->trasient
get(),load(),find(),iterate()->persistent
(trasient)save,saveOrUpdate()->persistent
(persistent)delete()->trasient
(persistent)close(),evict(),clear()->detached
(detached)update(),saveOrUpdate(),lock()->persistent
(detached)delete()->trasient
session的CRUD操作
save:把瞬时对象变为持久化对象。
hibernate使用oid维持表与实体间的关系,当对象处于持久化状态时,不允许对oid的修改操作。
当save方法操作游离态对象时,会重新插入一条语句
update:把游离态对象转化成持久化对象。
把对象重新放入到缓存中,变为持久化对象。
update只有在清理缓存的才会执行,所以当你连续对对象的一个属性作操作时,只会执行一条update语句
当session已经load了oid为1的对象,此时把oid为1游离态对象update,则出错。
出现的问题:
Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
java通过jdbc连接sqlserver和oracle时出现这个异常。虽然抛出这个异常,但对整个应用没有影响。这个异常产生的原因是jar包的版本不对。连接oracle10g的jdbc用ojdbc6.jar(1942k),连接sqlserver2008用sqljdbc.jar(570k),而不用sqljdbc4.jar(567k)。postgres用postgresql-8.2-504.jdbc3.jar。
session的缓存
session的save()方法持久化一个对象时,该对象会被放入缓存中。
session的load()方法会先判断对象是否在缓存中,再去数据库中查询。
session的close()方法会清空缓存。
当session调用commit()方法时,首先清理缓存,然后向数据库提交事务。所以当你连续对对象的一个属性作操作时,只会执行一条update语句
session的flush()方法会清理缓存,执行一系列的SQL语句,但不会提交事务
hibernate中java对象的状态
transient瞬时,new创建,没有被持久化,不处于缓存中
persistent持久化,已经持久化,加入到缓存中
detached游离,已经持久化,不处于缓存中
new->trasient
get(),load(),find(),iterate()->persistent
(trasient)save,saveOrUpdate()->persistent
(persistent)delete()->trasient
(persistent)close(),evict(),clear()->detached
(detached)update(),saveOrUpdate(),lock()->persistent
(detached)delete()->trasient
session的CRUD操作
save:把瞬时对象变为持久化对象。
hibernate使用oid维持表与实体间的关系,当对象处于持久化状态时,不允许对oid的修改操作。
当save方法操作游离态对象时,会重新插入一条语句
update:把游离态对象转化成持久化对象。
把对象重新放入到缓存中,变为持久化对象。
update只有在清理缓存的才会执行,所以当你连续对对象的一个属性作操作时,只会执行一条update语句
当session已经load了oid为1的对象,此时把oid为1游离态对象update,则出错。
出现的问题:
Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
java通过jdbc连接sqlserver和oracle时出现这个异常。虽然抛出这个异常,但对整个应用没有影响。这个异常产生的原因是jar包的版本不对。连接oracle10g的jdbc用ojdbc6.jar(1942k),连接sqlserver2008用sqljdbc.jar(570k),而不用sqljdbc4.jar(567k)。postgres用postgresql-8.2-504.jdbc3.jar。
推荐阅读
-
操作系统学习1 博客分类: java语言linuxandroid
-
《Linux命令行与shell脚本编程大全》 第十章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 内联输入重定向方括号退出状态码bcexpr
-
《Linux命令行与shell脚本编程大全》 第七章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 fdiskfsck物理卷卷组逻辑卷
-
《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 psqlmysql
-
《Linux命令行与shell脚本编程大全》 第八章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 aptitudedpkgyumurpmzypper
-
hibernate学习 博客分类: hibernate
-
《Linux命令行与shell脚本编程大全》 第二十一章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 gawk变量数组内建函数自定义函数
-
《Linux命令行与shell脚本编程大全》 第八章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 aptitudedpkgyumurpmzypper
-
《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 psqlmysql
-
《Linux命令行与shell脚本编程大全》 第十七章 学习笔记 博客分类: Linux命令行与shell脚本编程大全 selectdialogkdialogzenity图形界面