zoukankan      html  css  js  c++  java
  • Hibernate 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();
       }
      }
     }

    欧克蓝科技
  • 相关阅读:
    poj 2728 Desert King
    uva 439 Knight Moves
    hdu 1875 畅通工程再续
    scau实验题 8600 骑士周游问题(有障碍物)
    scau实验题 8596 Longest Ordered Subsequence
    poj 1679 The Unique MST
    uva 527 Oil Deposits
    poj 2533 Longest Ordered Subsequence
    .net 程序员 java 开发入门
    Collation conflict occur at operation on User define funtion & table's column
  • 原文地址:https://www.cnblogs.com/sias/p/4164315.html
Copyright © 2011-2022 走看看