Hibernate-DetachedCriteria离线查询

会话是在数据访问dao层运用的!
会话是跟数据库打交道的。Criteria是放在dao层做的。

数据访问层无非就是增删改查,要做的单纯些。

同样的增加,你不同的类,你又要写不同的新方法,这样就好累了- -
比如说部门写一个,账单写一个,员工写一个。。。
增删改查的方法都是一样的,只是类型不一样
可以直接传Object过来统一save。

查询的个性,员工 部门可能会不一样,但里面也有很多相同的方法。
任何动态查询啥的,最后都是执行一条查询list();

当然你要是把所有的动态查询拼接放到dao,那肯定就只能一个部门一个方法啦~~合不起来啊 = =

而业务层就应该考虑这些业务的事情啊。

因为Criteria需要会话。
可以把DetachedCriteria作为方法参数传递来构造查询条件
有大量重复的方法,一次性实现好。
做方法通用化!把业务条件排斥掉!
list()它都是一样的查询啊。

    // 超级简单的通用dao
    @SuppressWarnings("unchecked")
    public List<Emp> findEmps(DetachedCriteria c) {

        return c.getExecutableCriteria(HibernateSessionFactory.getSession()).list();

        //不管是谁,我执行一个就OK啦~~这样就很通用了。
        //可以在没有session去构建离线查询
        //创建不要求session,执行再绑定session啦~

    }

。。。。突然我写注释很智障啊!= =

biz

public List<Emp> findEmps(Map<String, Object> args) {
        DetachedCriteria c=DetachedCriteria.forClass(Emp.class);
        //这里就可以放动态查询的那些条件啦~

        return dao.findEmps(c);
    }

这里写图片描述
除了以前讲过的Restrictions来添加条件,现在又整了一个Property.forName来添加条件。。。

离线查询的结果 可以做为子查询啊- -
添加条件必须用Property
这里写图片描述

最后总结Criteria
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值