Hibernate入門
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property
name="connection.url">
</property>
<property
name="connection.username">jbit</property>
<property
name="connection.password">bdqn</property>
<property
name="connection.driver_class">
</property>
<property
name="show_sql">true</property>
<!--省略其他配置-->
<!--
的全路徑-->
resource="
/>
</session-factory>
</hibernate-configuration>
<hibernate-mapping>
name="cn.jbit.houserent.bean.User"
table="users">
<
name="id"
type="java.lang.Integer">
<
name="id"
/>
<
class="sequence"
>
<
name="sequence">SEQ_ID</param>
</
</
<
name="name"
type="java.lang.String">
<
name="name"
length="50"
not-null="true"
/>
</
<
name="password"
type="java.lang.String">
<
name="password"
length="50"
not-null="true"
/>
</
<!--
</hibernate-mapping>
//sf.getCurrentSession();
conf
= null;
sessionFactory
=
null;
session
=
null;
Transaction
tx
=
null;
try {
Configuration().configure();
=
conf.buildSessionFactory();
=
session.beginTransaction();
}
catch (HibernateException
e)
{
} finally{
}
get(Class class,Serializable id)
load(Class theClass,Serializable id)
當(dāng)使用Session的get方法時(shí),如果加載的數(shù)據(jù)不存在,get方法會(huì)返回一個(gè)null對(duì)象
使用load方法時(shí),如果加載的數(shù)據(jù)不存在,系統(tǒng)就會(huì)拋出異常
get方法即時(shí)加載
load方法支持lazy延遲加載
Hibernate中實(shí)體對(duì)象的三種狀態(tài):
總結(jié):
Hibernate是一個(gè)基于JDBC的持久化解決方案,是一個(gè)優(yōu)秀的"對(duì)象一關(guān)系映射"框架
使用Hibernate前要做好以下三個(gè)準(zhǔn)備。
1.添加需要的jar包
2.配置Hibernate配置文件
3.創(chuàng)建實(shí)體類和映射文件
使用Hibernate完成持久化操作需要以下七個(gè)步驟
1.讀取并解析配置文件
2.讀取并解析映射文件,創(chuàng)建SessionFactory
3.打開Session
4.開啟事務(wù)(查詢操作不需要)
5.執(zhí)行持久化方法
6.提交事務(wù)
7.關(guān)閉Session
使用提取重復(fù)代碼到基類的技巧可以簡化“七個(gè)步驟”
Hibernate中將所操作的實(shí)體對(duì)象的狀態(tài)分為三種,分別為Transient(瞬時(shí)狀態(tài))
Persistent(持久狀態(tài)) 以及Detached(游離狀態(tài))
注意:
openSession用一次
用getSession獲得session省資源
加載Hibernate的jar包:
需要f:\hibernate-distribution-3.3.2.GA\Hibernate3.jar和f:\hibernate-distribution-3.3.2.GA\lib\required目錄下的所有jar包
還需加載JDBC驅(qū)動(dòng)包
事務(wù)寫在業(yè)務(wù)層,若寫在DAO層,無論執(zhí)行何種操作都只是操作的一個(gè)對(duì)象,不存在事務(wù)的價(jià)值
session管理50000個(gè)操作,若超出范圍則會(huì)異常,使用假提交,把壓力扔給數(shù)據(jù)庫
getSession.flush(); //Hibernate批量處理
getSession.clear();
posted on 2012-04-22 15:48 hantai 閱讀(124) 評(píng)論(0) 編輯 收藏