HibernateTemplate使用方法

HibernateTemplate使用方法HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。1、常用方法:   1)voiddelete(Objectentity):删除指定持久化实例   2)dele

大家好,又见面了,我是你们的朋友全栈君。

HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。

1、常用方法:
   1)void delete(Object entity):删除指定持久化实例
   2)deleteAll(Collection entities):删除集合内全部持久化类实例
   3)find(String queryString):根据HQL查询字符串来返回实例集合 
   4)findByNamedQuery(String queryName):根据命名查询返回实例集合
   5)get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例
   6)load(Class entityClass, Serializable id)
   7)save(Object entity):保存新的实例
   8)saveOrUpdate(Object entity):根据实例状态,选择保存或者更新
   9)update(Object entity):更新实例的状态,要求entity是持久状态
   10)setMaxResults(int maxResults):设置分页的大小

2、应用示例
   1)get/load存取单条数据
      public Teacher getTeacherById(Long id) {   
         return (Teacher)this.hibernateTemplate.get(Teacher.class, id);   
      }   
   
      public Teacher getTeacherById(Long id) {   
         return (Teacher)this.hibernateTemplate.load(Teacher.class, id);   
      } 

   2)find/iterate查询操作
      public Iterator getTeachersByAge(int age) {   
         Iterator iterator = null;      
         //使用find方法   
         List list = (List)this.hibernateTemplate().find(“from Teacher t where t.age>?”, new Integer(age));   
         iterator = list.iterator();   
         //使用iterator方法   
         iterator = this.hibernateTemplate().iterate(“from Teacher t where t.age>?”, new Integer(age));       
         return iterator;   
      }  
      find和iterator的区别主要是iterate采用了N+1次查询,对于大批量查询,比如查询10000条记录,那么iterate就要执行10000+1次查询,find和iterate应根据具体的实际情况来使用,对于频繁的写操作对象,应使用find查询,而对于一些只读的数据对象,应使用iterate操作,因为iterate操作使用了Hibernate的缓存机制

   3)save/update/saveOrUpdate/delete 保存/更新/删除操作   
      public void save(Teacher teacher) {   
         this.hibernateTemplate.save(teacher);   
      }  
      public void update(Teacher teacher) {   
         this.hibernateTemplate.update(teacher);   
      }                
      public void update(Teacher teacher) {   
         this.hibernateTemplate.saveOrUpdate(teacher);   
      }  
      public void update(Teacher teacher) {   
         this.hibernateTemplate.delete(teacher);   
      } 

   4)bulkUpdate批量删除或者更新
      bulkUpdate提供了批量删除和更新,直接转换为相应的update/delete SQL进行批量删除和更新
      public void batchDelete(String name, int age) {   
        this.hibernateTemplate.bulkUpdate(“delete Teacher where name=? and age = ?”, new Object[]{name, age});   
      }  
      public void batchDelete(String name, String newName) {   
        this.hibernateTemplate.bulkUpdate(“update Teacher set name=? where name=?”, new Object[]{newName, name});   
      }  
      此时要注意的一个问题是,使用bulkUpdate操作,必须手工清除相关对象在Hibernate中的缓存(包括一级缓存和二级缓存)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148832.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常见逻辑漏洞[通俗易懂]

    常见逻辑漏洞[通俗易懂] 支付逻辑漏洞检测方法与案列支付漏洞一般分为三类,支付过程可直接修改数据包中的支付金额开发人员为了方便,导致支付的关键数据,能直接截包查看而重要的金额数据,在后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额.  没有对购买数量进行负数限制产生的原因是开发人员没有对购买的数量参数进行严格的限制,传输过程没有做签名,导致可随意修改,经典的修改方式就是…

    2022年5月4日
    41
  • 国内好的破解软件下载站

    国内好的破解软件下载站MSDNhttps://msdn.itellyou.cn/吾爱破解:https://www.52pojie.cn/爱学府软件园:https://www.52pojie.cn/HKC资源网:https://zy.hongkexueyuan.com/0DayDownhttp://www.0daydown.com/奥学网https://6so.so/果核剥壳http://www.ghboke…

    2022年6月11日
    126
  • iOS 用UIScrollView不能获取到touchesBegan

    iOS 用UIScrollView不能获取到touchesBegan网上查了一下 原来UIScrollView是没有继承touchesBegan方法的所以要自己重写UIScrollView然后继承 touchesBegan等方法才可以用重写UIScrollView很简单代码下.h//// myScrollView.h// WFClient//// Createdby屎壳郎情调on1

    2022年7月25日
    8
  • Codeforces Round #FF (Div. 2):C. DZY Loves Sequences[通俗易懂]

    Codeforces Round #FF (Div. 2):C. DZY Loves Sequences

    2022年1月25日
    42
  • go语言的type func()用法

    go语言的type func()用法在 go 语言中 type 可以定义任何自定义的类型比如熟悉的 typedogstruc typemyIntint 等等所以 func 也是可以作为类型自定义的 typemyFuncfu int int 意思是自定义了一个叫 myFunc 的函数类型 这个函数的签名必须符合输入为 int 输出为 int 已知 相同底层类型的变量之间是可以相互转换的 例如从一个取值范围小的 int16 转为取值范围大的 int32 所以 自定义的 myInt 和 int 之间也是可以转换的 typemyIn

    2025年6月8日
    3
  • CDuiString和String的转换

    很多时候难免用到CDuiString和string的转换。我们应该注意到,CDuiString类有个方法:可以通过这个方法,把CDuiString变为LPCTSTR; 所以下一步只是

    2021年12月18日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号