HibernateTemplate的实现原理及其常用方法

HibernateTemplate会自动帮助我们开启事务,关闭事务,我们自己只专注于业务。我们把这些责任全部委托给了 HibernateTemplate,不用直接控制事务

package cn.edu.hpu.HibernateTemplate;

import org.hibernate.Session;

public class MyHibernateTemplate {
    public void executeWithNativeSession(MyHibernateCallback callback){
        Session s=null;
        try {
            s=getSession();
            s.beginTransaction();
            
            callback.doInHibernate(s);//这里的方法用户自己就可以在接口里去写(save什么的)    
            s.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            s.getTransaction().rollback();
        }finally{
            if(s!=null){
                s.close();
                s=null;
            }
        }
    }
    
    public Session getSession(){
        Session session=null;
        return session;
    }
}

MyHibernateCallback.java:

package cn.edu.hpu.HibernateTemplate;  
  
import org.hibernate.Session;  
  
public interface MyHibernateCallback {  
    public void doInHibernate(Session s);   
}  
  
//如何去用MyHibernateTemplate方法  
    public static void main(String[] args) {  
        new MyHibernateTemplate().executeWithNativeSession(new MyHibernateCallback() {  
            public void doInHibernate(Session s) {  
                s.save(null);//或其他事务  
            }  
        });  
    }

以上是HibernateTemplate大致的封装实现原理

使用
我们可以直接继承HibernateDaoSupport的方法getHibernateTemplate()

getHibernateTemplate().

常用方法
delete(Object entity)
删除指定持久化实例

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

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

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

load或get(Classentity Class,Serializable id)
根据主键加载特定持久化类的实例

save(Object entity)
保存新的实例

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

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

setMaxResults(intmax Results)
设置分页的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值