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

  • 相关阅读:
    关于同余最短路
    【水】关于 __attribute__
    题解【AtCoder
    一些简单图论问题
    浅谈简单动态规划
    关于博客园主题(美化博客园)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第47章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第46章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第45章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第44章 读书笔记(待更新)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4387065.html
Copyright © 2011-2022 走看看