zoukankan      html  css  js  c++  java
  • SessionFactory的创建和Session的获得

    1。当我们调用

       Configuration config=new Configuration().configure();

           时候Hibernate会自己主动在当前的CLASSPATH中搜寻hibernate.cfg.xml文件并将其读取到内存作为后继操作的基础配置。

     

     我们也能够指定配置文件名称,假设不希望使用默认的hibernate.cfg.xml文件作为配置文件的话:

       

    SessionFactory

         SessionFactory 负责创建Session的实例。我们能够通过Configuation实例创建SessionFactory;

            Configuration config=new Configuration().configure();

            SessionFactory sessionFactory=config.buildSessionFactory();

     

    Configuration 实例config 会依据当前的配置信息,构造SessionFactory实例并返回。SessionFactory一旦构建完成,即被赋予特定的配置信息。也就是说,之后config的不论什么变更将不会影响到已经创建的SessionFactory实例(SessionFactory)。假设须要使用基于修改后的config实例的SessionFactory,须要从config又一次构建一个SessionFactory实例。

     

    Session

       Session 是持久层操作的基础,相当于JDBC中的Connnection。

               Configuration config=new Configuration().configure();  //读取默认的hibernate.cfg.xml的文件

               SessionFactory sessionFactory=config.buildSessionFactory();  //通过config创建sessionFactory的实例

               Session session=sessionFactory.openSession();       //获得session

    之后,我们就能够调用Session所提供的save,find,flush等方法完毕持久化操作:

             看例Save:

       TUser user=new TUser();

       user.setName("yuanliang");

       session.save(user);

       session.flush();//Session.flush方法强制数据库同步,这里既强制Hibernate将user实例马上同步到数据库中。在事物提交的时候和Session关闭的时候,也会自己主动运行flush方法

       

    find()//这种方法返回一个List

       List list=Session.find(From TUser as tu order by tu.name asc);

    Load() //这种方法返回是一个对象

       Customer c=(Customer)session.load(Customer.class,customer_id);

     

    改动数据:

    1. 将要改动的数据从数据库读出,赋值给表相应的持久化类

     Query query = session.createQuery("from User as u where list = query.list();
     User usr = (User)list.get(0);

    2. 对得到的持久化对象进行改动
     usr.setUsername("Look");
    3. 启动事务管理
       Transaction ts = session.beginTransaction();

    4. 将赋值后的持久化对象提交给session
      
     session.save(usr);
    5. 结束事务管理并向数据库提交
     ts.commit();

    -------------------------------
    public void update(){
      
      Integer Integer(2);
      Transaction ts = null;
      try {
       Session session = HibernateSessionFactory.currentSession();
       
       Query query = session.createQuery("from User as u where list = query.list();
       User usr = (User)list.get(0);
       usr.setUsername("Look");
       
       ts = session.beginTransaction();
       session.save(usr);
       
       ts.commit();
       
      } catch (HibernateException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       try {
        ts.rollback();
       } catch (HibernateException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
       }
      }
     }

  • 相关阅读:
    数据库设计 一对多 多对多 无限级菜单 设计方法
    线程创建的四种方式
    Linux常用指令---grep(搜索过滤)
    Netty4实战
    linux查找日志技巧
    javascript---关于字符串和数组的方法
    angularJs---route
    JavaScript---详解scroll
    JavaScript--location
    socket中 emit和on的写法
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4279915.html
Copyright © 2011-2022 走看看