hibernate主要接口和类(笔记)

hibernate的核心类和接口

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();

                     }      

              }

posted @ 2013-03-11 23:26  九果子  阅读(561)  评论(0编辑  收藏  举报