Hibernate學(xué)習(xí)計(jì)劃。
Hibernate 6.20--7.20

(1)6.20-6.25:完成學(xué)習(xí)Hibernate的所有基本概念;
(2)6.26-6.30:通過(guò)一些實(shí)例熟悉hibernate的應(yīng)用, 必要的時(shí)候查看源代碼;
(3)7.1-7.10:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的論壇系統(tǒng)。
(4)7.11-7.20:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的ORM系統(tǒng)。

學(xué)習(xí)計(jì)劃雖然有點(diǎn)簡(jiǎn)單,不過(guò)總歸計(jì)劃出來(lái)了,就按照這個(gè)來(lái)吧,一定要堅(jiān)持下來(lái)

Hibernate學(xué)習(xí)筆記--Configuration,SessionFactory,Session

Configuration:負(fù)責(zé)管理Hibernate的配置信息,這些配置信息都是從配置文件hibernate.cfg.xml或者Hibernate.
properties讀取的,當(dāng)然也可以自定義文件名稱,只要在實(shí)例化Configuration的時(shí)候指定具體的路徑就可以了;
SessionFactiory:Configuration的實(shí)例會(huì)根據(jù)當(dāng)前的配置信息,構(gòu)造SessionFactory實(shí)例。SessionFactory是線程安全的,一般情況下一個(gè)應(yīng)用中一個(gè)數(shù)據(jù)庫(kù)共享一個(gè)SessionFactory實(shí)例。
Session:一般的持久化方法(CRUD)都是通過(guò)Session來(lái)調(diào)用的,Session是非線程安全的。

下面這個(gè)實(shí)例是我用Hibernate編寫(xiě)的第一個(gè)實(shí)例,當(dāng)然主要的作用是我自己做個(gè)筆記,以后忘了的時(shí)候可以看看
package org.william.First;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.william.xml.*;


/**
?* @author wangliang138840
?*
?*/
public class BaseCRUD{
?
?private static Configuration config;
?private static SessionFactory sessionFactory;
?private Session session;
?
?public BaseCRUD(){
??init();
?}
?
?private void init(){
??try{
???config = new Configuration().configure();
???sessionFactory = config.buildSessionFactory();
???session = sessionFactory.openSession();
??}catch(Exception e){
???e.printStackTrace();
??}
?}
?
?public void close(){
??try{
???session.close();
???sessionFactory.close();
??}catch(Exception e){
???e.printStackTrace();
??}
?}
?
?public static void main(String args[]){
??BaseCRUD baseCRUD = new BaseCRUD();
??Customer customer = new Customer();
??Transaction tx = baseCRUD.session.beginTransaction();
??customer.setName("wangliang");
??baseCRUD.session.save(customer);
??tx.commit();
??
??customer = (Customer)baseCRUD.session.get(Customer.class, new Long(1));
??System.out.println(customer.getPeopleID());
??
??tx = baseCRUD.session.beginTransaction();
??baseCRUD.session.delete(customer);
??tx.commit();
??
??baseCRUD.close();
?}
}