zoukankan      html  css  js  c++  java
  • HibernateTemplate的常规用法

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

    q      void delete(Object entity):删除指定持久化实例

    q      deleteAll(Collection entities):删除集合内全部持久化类实例

    q      find(String queryString):根据HQL查询字符串来返回实例集合

    q      findByNamedQuery(String queryName):根据命名查询返回实例集合

    q      get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例

    q      save(Object entity):保存新的实例

    q      saveOrUpdate(Object entity):根据实例状态,选择保存或者更新

    q      update(Object entity):更新实例的状态,要求entity是持久状态

    q      setMaxResults(int maxResults):设置分页的大小

    下面是一个完整DAO类的源代码:

    public class PersonDAOHibernate implements PersonDAO

    {

        //采用log4j来完成调试时的日志功能

    private static Log log = LogFactory.getLog(NewsDAOHibernate.class);

        //以私有的成员变量来保存SessionFactory

    private SessionFactory sessionFactory;

    //以私有变量的方式保存HibernateTemplate

    private HibernateTemplate hibernateTemplate = null;

             //设值注入SessionFactory必需的setter方法

        public void setSessionFactory(SessionFactory sessionFactory)

    {

               this.sessionFactory = sessionFactory;

        }

             //初始化本DAO所需的HibernateTemplate

    public HIbernateTemplate getHibernateTemplate()

    {

             //首先,检查原来的hibernateTemplate实例是否还存在

             if ( hibernateTemplate == null)

             {

                       //如果不存在,新建一个HibernateTemplate实例

                       hibernateTemplate = new HibernateTemplate(sessionFactory);

             }

             return hibernateTemplate;

    }

             //返回全部的人的实例

        public List getPersons()

             {       

                       //通过HibernateTemplatefind方法返回Person的全部实例

               return getHibernateTemplate().find("from Person");

        }

             /**

              * 根据主键返回特定实例

              * @ return 特定主键对应的Person实例

              * @ param 主键值

        public News getNews(int personid)

             {

               return (Person)getHibernateTemplate().get(Person.class, new Integer(personid));

        }

             /**

              * @ person 需要保存的Person实例

              */

        public void savePerson(Person person)

             {                

                       getHibernateTemplate().saveOrUpdate(person);

        }

             /**

              * @ param personid 需要删除Person实例的主键

              * /

        public void removePerson(int personid)

             {

                       //先加载特定实例

               Object p = getHibernateTemplate().load(Person.class, new Integer(personid));

                       //删除特定实例

               getHibernateTemplate().delete(p);

        }

    成长的乐趣,在于分享!
    大龄程序员,一路走来,感慨颇多。闲暇时写写字,希望能给同行人一点帮助。
    本文版权归作者growithus和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    (Java实现) 洛谷 P1106 删数问题
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1106 删数问题
    目测ZIP的压缩率
  • 原文地址:https://www.cnblogs.com/growithus/p/11012443.html
Copyright © 2011-2022 走看看