Hibernate对象状态

来源:互联网 发布:数控折弯机编程操作 编辑:程序博客网 时间:2024/06/07 14:59

Hibernate对象状态:

临时(transeint):一般为new出的对象,与数据库没有对应,跟session没有关联

持久化(persist):对象在session管理之中,与数据库对应

特点:有唯一标识符(OID)

                                   对象的改变同步到数据库

游离(detached):数据库中有对应记录,但对象不再session管理中,修改此状态对象数据库不会有变化

删除(removed):执行了delete()后的对象

状态间的转换关系:


session中的方法:

一、操作实体对象的

save() 将临时状态变成持久化状态 insert into...

update()将游离状态变成持久化状态 update...

delete() 将持久化或游离状态变成删除状态 delete... 如果删除的对象不存在,会抛出异常

二、查询实体对象的

get() 获取数据,持久化状态 select... 会马上执行sql语句,如果对象不存在,抛出空指针异常

返回的原始对象

load() 获取数据,持久化状态 select... 不会马上执行sql语句

返回的是代理对象,要求类不能是final,否则不能生成子类代理,就不能使用懒加载

让懒加载失效的两种方法:1.类由final修饰,2.在映射文件的class标签中设置lazy="false",lazy默认为true

createQuery()

createCriteria()

三、操作缓存的

clear()

evict()

flush()


session大批量保存

@Testpublic void testBatchSave(){Session session=sessionFactory.openSession();Transaction tx=session.beginTransaction();//操作//操作大量数据,防止session中对象过多而发生内存溢出for(int i=0;i<30;i++){User user =new User();user.setName(i+"test");session.save(user);if(i%5==0){session.flush();//先刷新session.clear(); //再清空}}tx.commit();session.close();}


0 0
原创粉丝点击