HibernateTemplate的常规用法

  • Post author:
  • Post category:其他


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)

:设置分页的大小



package com.yp.hibernate.model;


// default package


import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.Iterator;

import java.util.List;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.hibernate.LockMode;

import org.hibernate.SessionFactory;

import org.hibernate.criterion.Example;

import org.springframework.context.ApplicationContext;

import org.springframework.orm.hibernate3.HibernateTemplate;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import com.yp.dtos.TicketDTO;


/**

* Data access object (DAO) for domain model class BpMovie.

*

* @see .BpMovie

* @author MyEclipse – Hibernate Tools

*/

public class BpMovieDAO extends HibernateDaoSupport {


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


private HibernateTemplate hibernateTemplate;


private SessionFactory sessionFactory;


public BpMovieDAO() {


}


public BpMovieDAO(SessionFactory sessionFactory) {


// TODO Auto-generated constructor stub

this.sessionFactory = sessionFactory;

this.hibernateTemplate = new HibernateTemplate(this.sessionFactory);

}


protected void initDao() {


// do nothing

}


public void save(BpMovie transientInstance) {


log.debug(“saving BpMovie instance”);

try {


getHibernateTemplate().saveOrUpdate(transientInstance);

log.debug(“save successful”);

} catch (RuntimeException re) {


log.error(“save failed”, re);

throw re;

}

}


public void delete(BpMovie persistentInstance) {


log.debug(“deleting BpMovie instance”);

try {


getHibernateTemplate().delete(persistentInstance);

log.debug(“delete successful”);

} catch (RuntimeException re) {


log.error(“delete failed”, re);

throw re;

}

}


public BpMovie findById(java.lang.Integer id) {


log.debug(“getting BpMovie instance with id: ” + id);

try {


BpMovie instance = (BpMovie) this.hibernateTemplate.get(“com.yp.hibernate.model.BpMovie”,id);

return instance;

} catch (RuntimeException re) {


log.error(“get failed”, re);

throw re;

}

}


public List findByExample(BpMovie instance) {


log.debug(“finding BpMovie instance by example”);

try {


List results = getSession().createCriteria(“BpMovie”).add(

Example.create(instance)).list();

log.debug(“find by example successful, result size: ”

+ results.size());

return results;

} catch (RuntimeException re) {


log.error(“find by example failed”, re);

throw re;

}

}


//将传入的对象持久化并保存


public void attachDirty(BpMovie instance) {


log.debug(“attaching dirty BpMovie instance”);

try {


getHibernateTemplate().saveOrUpdate(instance);

log.debug(“attach successful”);

} catch (RuntimeException re) {


log.error(“attach failed”, re);

throw re;

}

}


//将传入的对象状态设置为Transient态


public void attachClean(BpMovie instance) {


log.debug(“attaching clean BpMovie instance”);

try {


getHibernateTemplate().lock(instance, LockMode.NONE);

log.debug(“attach successful”);

} catch (RuntimeException re) {


log.error(“attach failed”, re);

throw re;

}

}


public static BpMovieDAO getFromApplicationContext(ApplicationContext ctx) {


return (BpMovieDAO) ctx.getBean(“BpMovieDAO”);

}


}







版权声明:本文为flywithcan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。