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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM