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