hibernate学习记录2

来源:互联网 发布:淘宝网买帽子 编辑:程序博客网 时间:2024/05/16 07:07

Session的几个主要方法

1.save、presist保存数据,presist在事务外不会产生insert语句。

2.delete删除对象。

3.update更新对象,如果数据库中没有记录,会出现异常。

4.get根据ID查询,会立刻访问数据库。

5.load根据ID查询,返回的是代理,不会立即访问数据库。

6.saveOrUpdate,merge根据ID和version的值来确定是save或update,调用merge你的对象还是托管的。

7.lock把对象变成持久对象,但不会同步对象的状态。

----------------------------------------------------------------------------------------------------------------------------------------

hibernate对象的三种状态

瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm垃圾回收器回收,一般是new出来且与session没有关联的对象。

持久(presistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交:持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能够用检测到)。

托管(detached):数据库中有数据与之对应,但当前没有session与之关联:托管对象状态发生改变,hibernate不能检测到。(也称为游离态)

----------------------------------------------------------------------------------------------------------------------------------------

Query主要注意的方法

1.list以List集合的方式返回查询的数据

2.createQuery创建一个Query对象

3.uniqueResult当确定返回值只有一条时,使用该方法,否则报异常

4.setFirstResult、setMaxResults用于分页,hibernate通过配置文件中的方言来写不同的分页sql语句。

5.setString可以通过字符串来给hql语句赋值。

----------------------------------------------------------------------------------------------------------------------------------------

HQL(Hibernate Query Language)

hql与sql不同,hql是面向对象的语句,而sql是面向数据库的语句。

hql在数据库中是通用的,只需要在配置文件中修改方言就可以了,hibernate会对hql语句翻译成相对于数据库的sql语句。

0 0
原创粉丝点击