學習Hibernate,首先我們要對其配置文件的作用有了解。
1.Hibernate的基本配置文件有兩種:hibernate.cfg.xml和.hbm.xml文件。前者包含了Hibernate與數據庫的基本連接信息,在Hibernate工作的初始階段,這些信息被先後加載到Configuration和SessionFactory實例;後者包含了Hibernate的基本映射信息,即系統中每一個類與其對應的數據庫表之間的關聯信息,在Hibernate工作的初始階段,這些信息通過hibernate.cfg.xml的mapping節點被加載到Configuration和SessionFactory實例。
hibernate.cfg.xml中的resource
<!--指定Hibernate映射文件路徑 -->
<mapping resource="com/Hibernate/xxxx.hbm.xml" />
XXX.hbm.xml中的class
<!-- 下面的class節點定義了Province類和對應數據庫表之間的關聯關係 -->
<class
name="com.xxx.hibernate.Province"
table="Province"
>
2.Hibernate的重要操作
當我們調用Configuration config=new Configuration().configure();
時候Hibernate會自動在當前的CLASSPATH中搜尋hibernate.cfg.xml文件並將其讀取到內存作爲後繼操作的基礎配置。
我們也可以指定配置文件名,如果不希望使用默認的hibernate.cfg.xml文件作爲配置文件的話。
SessionFactory
SessionFactory 負責創建Session的實例。我們可以通過Configuation實例創建SessionFactory;
SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
/* 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 Books");
Load() //這個方法返回是一個對象
Customer c=(Customer)session.load(Customer.class,customer_id);
3.修改數據:
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();
}
}
}
另:此update例子可能不能運行,有關Hibernate的增刪改查問題,請查閱