首先,討論一下 xml 配置文件的優(yōu)點(diǎn), 個(gè)人認(rèn)為主要優(yōu)點(diǎn)就是當(dāng)你改變底層配置時(shí) 不需要改變和重新編譯代碼,只需要在xml 中更改就可以了,例如 Hibernate.cfg.xml 當(dāng)你要更改底層數(shù)據(jù)庫(kù)時(shí), 只要更改配置文件就可以了.Hibernate會(huì)為你做好別的事情.
那么xml的缺點(diǎn)呢,個(gè)人認(rèn)為有以下幾點(diǎn):
其中第一 二點(diǎn) 借助于先進(jìn)的IDE 可能不是什么問(wèn)題. 但是對(duì)初學(xué)者還是個(gè)問(wèn)題
下面我們看看 Annotations的 特性吧! 可以解決xml碰到的問(wèn)題,有以下優(yōu)點(diǎn)
關(guān)于映射文件是使用 hbm.xml 文件還是使用 Annotations 我們來(lái)看看2者的性能吧. 先聲明一下,個(gè)人認(rèn)為映射文件一旦配置好就不會(huì)在很大程度上改變了.所以使用xml文件并不會(huì)帶來(lái)很大的好處.假如你認(rèn)為 映射文件在你的項(xiàng)目中也經(jīng)常變化,比如一列String數(shù)據(jù) ,今天你使用 length="16" 明天你認(rèn)為 該數(shù)據(jù)的長(zhǎng)度應(yīng)該更長(zhǎng)才能滿(mǎn)足業(yè)務(wù)需求 于是改為length="128" 等等類(lèi)似的問(wèn)題 . 假如你經(jīng)常有這方面的變動(dòng)的話(huà),下面的比較你可以不用看了 , 你應(yīng)該使用 xml文件 因?yàn)锳nnotations 無(wú)法很好的滿(mǎn)足你的要求.
現(xiàn)在讓我們就來(lái)看看2者的性能比較吧.
(說(shuō)明: 這里只是比較查找 插入 的時(shí)間快慢,沒(méi)有比較除運(yùn)行時(shí)間以外的其他性能,如 內(nèi)存占用量 等等)
先來(lái)看看測(cè)試程序和配置.
首先在 Hibernate.cfg.xml 文件中去掉了
<PRoperty name="hibernate.hbm2ddl.auto">update</property>
這一行, 因?yàn)樵谇懊娴膶?shí)驗(yàn)中以及建立了數(shù)據(jù)庫(kù)表了 不再需要更新了.假如你是第一次運(yùn)行該例子 還是要該行的.
Test.java 如下:
/*
* Created on 2005
* @author
*/
package test.hibernate.annotation;
import org.hibernate.session;
import org.hibernate.Transaction;
public class Test {
public static void main(String [] args) {
long start = 0;
long end = 0;
start = System.currentTimeMillis(); //程序開(kāi)始時(shí)間
Session s = HibernateUtil.currentSession();
long mid = System.currentTimeMillis(); //初始化完畢的時(shí)間 (可能此時(shí)并沒(méi)有初始化完畢^(qū)_^)
Transaction tx = s.beginTransaction();
/********************測(cè)試讀取的代碼************************/
Person p = null;
for(int i = 1; i <= 100; i ++) {
p = (Person) s.get(Person.class, i);
System.out.println(p.getName());
}
System.out.println(p.getName());
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注