Hibernate的Transaction(事务)接口和Query接口
来源:互联网 发布:golang package 编辑:程序博客网 时间:2024/06/05 10:44
一 Transaction(事务)接口
事务简单的说,就是一组对数据库的操作集合,它们要么全部成功,要么全部失败.这个可以保证数据的一致性,事务具有原子性。
①Transaction是底层的事务实现中抽象出来的接口。
②可能是一个jdbc或者jta的事务,这样有利于hibernate在不同执行环境的移植。
③hibernate要求显示的调用事务(如果仅仅是查询可以不调用)。
示例:
Transaction ts=s.beginTransaction();
...
ts.commit();
s.close();
发生异常需要ts.rollback()回滚。
二 Query接口
Query接口类型的对象可以对数据库操作,它可以使用Hql,Qbc,Qbe和原生SQL(native Sql)对数据库操作.官方推荐使用Hql语句。
通过query接口我们可以完成更加复杂的查询任务。
三 实战Query接口——通过用户来查询数据
package com.cakin.view;import java.util.Date;import java.util.List;import javax.management.RuntimeErrorException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import com.cakin.domain.Employee;import com.cakin.util.HibernateUtil;import com.cakin.util.MySessionFactory;public class TestMain { /** * @param args */ public static void main(String[] args) { Session session=HibernateUtil.getCurrentSession(); Transaction ts=null; try { ts=session.beginTransaction(); //获取query引用[这里 Employee不是表.而是domain类名] //[where 后面的条件可以是类的属性名,也可以是表的字段,按照hibernate规定,我们还是应该使用类的属性名.] Query query=session.createQuery("from Employee where name='cakin'"); //通过list方法获取结果,这个list会自动的将封装成对应的domain对象 //所以我们jdbc进行二次封装的工作没有. List<Employee> list=query.list(); for(Employee e: list){ System.out.println(e.getName()+" "+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(); } } })
四 测试结果
Hibernate:
select
employee0_.id as id0_,
employee0_.name as name0_,
employee0_.email as email0_,
employee0_.hiredate as hiredate0_
from
employee employee0_
where
employee0_.name='cakin'
cakin 2017-10-04 17:34:59.0
阅读全文
0 0
- Hibernate的Transaction(事务)接口和Query接口
- Hibernate 的 Transaction接口
- day24 ORM Hibernate常用的接口和类(Configuration, SessionFactory , Session, Transaction ,Query) hql
- Hibernate的5个核心接口:Session、SessionFactory、Transaction、Query和Configuration
- Hibernate的Query接口
- Hibernate的Query接口和查询操作
- hibernate的Transaction接口理解
- Hibernate的Query接口和Criteria接口的区别
- Session,SessionFactory,Configuration,Transaction,Query和Criteria接口,Callback接口
- Hibernate常用的接口和类Session&Transaction(四)
- Hibernate中query接口
- Hibernate的核心接口 --- Query查询详解
- Hibernate之Query接口的uniqueResult()方法
- Hibernate之Query接口的uniqueResult()方法
- Hibernate之Query接口的uniqueResult()方法
- Hibernate之Query接口的uniqueResult()方法
- Hibernate之Query接口的uniqueResult()方法
- Hibernate的核心接口 --- Query查询详解
- 02.开源项目--git引用分支
- MyBatis <set>标签的使用
- Java事务的类型有三种
- hibernate懒加载之No session扩大session作用范围
- SVD简化数据
- Hibernate的Transaction(事务)接口和Query接口
- Mysql基础
- sql数据库性能优化
- Java之 Semaphore信号量的原理和示例
- 编写一个函数,删除一个字符串的一部分
- 【个人笔记重点,不作为参考】主题:Mac OSX下Sublime Text配置使用Ctags实现代码跳转
- C++学习笔记--函数参数扩展和占位参数
- Response对象的API的代码演示
- #ifndef/#define/#endif