Hibernate-模板模式

在我的博客《Hibernate总结(一)》在对数据库的增删改查前后重复的使用了得到Session与关闭Session等操作,因此我想到了模板设计模式。

模板设计模式概述:

  定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。

废话不多说,先贴上之前的代码:

public class a {
    
    public static void main(String[] args){
        Configuration config=new Configuration().configure();
        SessionFactory sf=config.buildSessionFactory();
        Session s=sf.openSession();
        sf.getCurrentSession();
        
        User u=new User();
        u.setAge(21);
        u.setName("King");
        s.save(u);

        s.close();
        sf.close();
    }
}

在这里大量重复了得到Session与关闭Session的操作,因此使用模板设计模式:

废话不多说,上代码

public abstract class Template {//抽象父类,定义了算法骨架
    
    public abstract void fun1(Session s);//子类中要实现的功能
    
    public void execute(){
        Configuration config=new Configuration().configure();
        SessionFactory sf=config.buildSessionFactory();
        Session s=sf.openSession();
        Transaction tran=null;
        try {
            tran=s.beginTransaction();
            
            fun1(s);
            
            tran.commit();
        } catch(Exception e) {
            if(tran!=null){
                tran.rollback();
            }
            e.printStackTrace();
        } finally{
            s.close();
            sf.close();
        }
    }
}

而我们这么使用:

public class a {
    
    public static void main(String[] args){
        new Template(){//在此使用Java匿名内部类
            @Override
            public void fun1(Session s) {
                User u=new User();
                u.setAge(21);
                u.setName("King");
                s.save(u);
            }
        }.execute();
    }
}

这样就极大简化了代码。

当然,到了这里,你是否想起了代理模式呢,静态代理与动态代理模式,下一篇将和大家分享代理设计模式...

 

转载于:https://www.cnblogs.com/kingofkai/p/6015513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值