(第3讲)hibernate的核心类和接口

http://www.cnblogs.com/jggz/articles/2954859.html

Configuration 类

它的用处是:

1.      读取hibernate.cfg.xml

2.      管理对象关系映射文件 <mapping resource=””>

3.      加载hibernate 的驱动,url ,用户..

4.      管理hibernate配置信息

 

SessionFactory 接口(会话工厂)

 

1.      可以缓存sql语句和数据(称为session级缓存)!!

2.      是一个重量级的类,因此我们需要保证一个数据库,有一个SessionFactroy

 

session接口

它的主要功能和作用是:

1.        Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合)

2.        Session实例通过SessionFactory获取,用完需要关闭。

3.        Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSessiong()。

4.        Session可以看做是持久化管理器,它是与持久化操作相关的接口

 

query接口

 

通过query接口我们可以完成更加复杂的查询任务.

   Sessionsession=HibernateUtil.getCurrentSession();

              Transaction ts=null;

              try {

                     ts=session.beginTransaction();

                     //获取query引用[这里 Employee不是表.而是domain类名]

                     //[where 后面的条件可以是类的属性名,也可以是表的字段,安照hibernate规定,我们还是应该使用类的属性名.]

                     Queryquery=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 newRuntimeException(e.getMessage());

              }finally{

                     //关闭session

                     if(session!=null&&session.isOpen()){

                            session.close();

                     }

 

 criteria 接口

 

Sessionsession=HibernateUtil.getCurrentSession();

              Transaction ts=null;

              try {

                     ts=session.beginTransaction(

                     Criteriacri=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 newRuntimeException(e.getMessage());

              }finally{

                     //关闭session

                     if(session!=null&&session.isOpen()){

                            session.close();

                     }      

              }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值