Hibernate session的方法的一些说明

用Hibernate肯定会频繁的用到session,下面就将Hibernate session中一些经常的用方法逐个的解释一下。

 

 

[c-sharp]  view plain copy
  1. Transaction beginTransact  
  

 

        开始一个工作单元并返回一个与之相关Transaction对象,最为事务的开始,通常在需要对数据库进行更改例如save,update或delete 时使用。在事务结束后需要调用Transaction的commit方法提交更改,该方法必须在Hibernate session关闭之前使用。

 

[java]  view plain copy
  1. void flush() void clear()    

 

        这两个方法通常在一起使用。由于Hibernate有缓存数据的功能,所以当我们要批量查询和批量插入时,会因为大量的缓存而导致内存溢出。所以我们可以 在执行批量插入时插入一定数目的数据后调用flush()提交插入,然后调用clear()清空当前Hibernate session内的所有缓存。批量查询同理

 

[java]  view plain copy
  1. Connection close()    

 

        关闭Hibernate session,同时清空所有的缓存。

 

[java]  view plain copy
  1. Connection connection()   

 

        获取当前Hibernate session使用的JDBC connection。

 

[java]  view plain copy
  1. boolean contains(Object object)    

 

        返回boolean值,判断一个实例是否与当前Hibernate session保持关联,即为持久化状态。

 

[java]  view plain copy
  1. Query createQuery(String queryString)    

 

        返回一个给定HQL语句的Query对象。

 

[java]  view plain copy
  1. SQLQuery createSQLQuery(String queryString)    

 

       返回一个用于执行原生SQL语句的SQLQuery对象

 

[java]  view plain copy
  1. void delete(Object object)    

 

        删除与该对象关联的数据里内的一条记录。该对象可以是处于持久化状态也可以是处于瞬态但与数据库的记录有id联系。如果该对象的cascade属性为delete或all将会同时删除相关联的数据。

 

[java]  view plain copy
  1. void delete(String entityName, Object object)    

 

       这个和前面一个的区别是,前面是直接删除Object,这个是要这个Object必须是entityName的实例才删除,不然的话,就报HibernateException

 

[java]  view plain copy
  1. Connection disconnect()    

 

       断开与session与当前JDBC的连接,如果连接有Hibernate管理,则将连接送回连接池,否则将送回给程序本身。

 

[java]  view plain copy
  1. Object get(Class clazz, Serializable id)    

 

        根据指定的实体类以及实体id返回一个实体的实例。如果找不到记录则返回null

 

[java]  view plain copy
  1. Object get(String entityName, Serializable id)    

 

      同上,entity为实体的名字

 

[java]  view plain copy
  1. String getEntityName(Object object)    

 

       返回一个持久化类的实体名

 

[java]  view plain copy
  1. erializable getIdentifier(Object object)   

 

 

        返回一个被session缓存的实体实例的id

 

[java]  view plain copy
  1. Query getNamedQuery(String queryName)    

 

        返回一个在映射文件中定义的命名查询的query对象 

 

[java]  view plain copy
  1. SessionFactory getSessionFactory()    

 

        获取生成当前session的SessionFactory

 

[java]  view plain copy
  1. Transaction getTransaction()    

 

        不说了,地球人都知道

 

[java]  view plain copy
  1. Object load(Class theClass, Serializable id)     
  2. Object load(String entityName, Serializable id)     

 

        和get方法一个效果,不同的是load方法不是直接去数据库查询,而是在session里面创建了一个代理对象,当用到这个对象的时候,hibernate才会去数据库查询,当查询不到的时候就会报异常

 

 

[java]  view plain copy
  1. Serializable save(Object object)   

 

 

        将一个实体实例持久化,返回该持久化实例的id。在持久化之前必须手动或自动的指派id。

 

[java]  view plain copy
  1. void update(Object object)    

 

       执行步骤:

1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。 
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用 Session.flush)。

 

[java]  view plain copy
  1. void saveOrUpdate(Object object)     

 

执行步骤:

1. 首先在Session内部缓存中进行查找,如果发现则直接返回。 
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。 
3. 根据unsaved-value判断对象是否处于未保存状态。 
4. 如果对象未保存(Transient状态),则调用save方法保存对象。 
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值