hibernate学习笔记(四)

Transaction(事务)接口

这个接口是很重要的,因为hibernate对数据库的实现都是事务的处理方式,学习笔记(三)也写明了使用的模板

1.Transaction是底层的事物实现中抽象出来的接口
2.可能是一个jdbc或者jta的事务,这样有利于hibernate在不同执行环境的移植。
3.hibernate要求显示的调用事务(如果仅仅是查询可以不调用.)

要注意提交(commit)之前如果发生异常,要注意事务的回滚(roll back),详见学习笔记(三)



Query接口

前边也可以查询操作,但是只能用主键查询,这个显然是不够的,所以需要Query接口

Query接口类型的对象可以对数据库操作,它可以使用Hql,Qbc,Qbe和原生SQL(native Sql)对数据库操作.官方推荐使用Hql语句。Query接口查询出来的结果是一个List接口类型的对象。

可以在main函数里写一个Query的测试代码:

Session session=HibernateUtil.getCurrentSession();
		Transaction ts=null;
		
		try {
			
			ts=session.beginTransaction();
			
			//获取query引用[这里 Employee不是表.而是domain类名]
			//[where 后面的条件可以是类的属性名,也可以是表的字段,按照hibernate规定,
                        //我们还是应该使用类的属性名.]
			Query query=session.createQuery("from Employee where namehsp='shunping'");
			//通过list方法获取结果,这个list会自动的将封装成对应的domain对象
			//所以我们jdbc进行二次封装的工作没有.
			List<Employee> list=query.list();
			for(Employee e: list){
				System.out.println(e.getAaaid()+" "+e.getHiredate());
			}
			
			ts.commit();
			
		} catch (Exception e) {
			
			if(ts!=null){
				ts.rollback();
			}
			throw new RuntimeException(e.getMessage());
		}finally{
			//关闭session
			if(session!=null&&session.isOpen()){
				session.close();
			}
			
		}

注意这里的查询语句不再是我们以前使用的sql语句了,后边会详细讲解说明,注意from后边的并不是像以前一样的表名,而是我们对象的名字,因为还是直接操作对象来实现对数据库的操作。


Criteria接口

除了Query接口外,hibernate还提供了另一个查询的接口,这就是Criteria接口,但是这个并不是官方推荐的。
代码示例:

<span style="font-size:18px;">Session session=HibernateUtil.getCurrentSession();
		Transaction ts=null;
		
		try {
			
			ts=session.beginTransaction();
			
			Criteria cri=session.createCriteria(Employee.class).
			setMaxResults(2).addOrder(Order.desc("id") );
			List<Employee> list=cri.list();
			for(Employee e: list){
				System.out.println(e.getAaaid());
			}
			
			ts.commit();
			
		} catch (Exception e) {
			
			if(ts!=null){
				ts.rollback();
			}
			throw new RuntimeException(e.getMessage());
		}finally{
			//关闭session
			if(session!=null&&session.isOpen()){
				session.close();
			}
			
		}</span>

主要是使用Query,Criteria使用的还是比较少的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值