国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

hibernate的hello word(國(guó)內(nèi)高手撰寫(xiě))

2019-11-18 13:55:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  終于有點(diǎn)對(duì)hibernate入門(mén)的感覺(jué)。方便門(mén)外的學(xué)習(xí)者,給一個(gè)簡(jiǎn)單的入門(mén)例子。
假如你有用過(guò)其他持久架構(gòu) 轉(zhuǎn)到hibernate其實(shí)很簡(jiǎn)單。一些原理方面就不講了,
robbin講的肯定比我好的多,自己去精華版看看。
我所給的只是我當(dāng)初剛開(kāi)始接觸hibernate時(shí)候很想要的一個(gè)簡(jiǎn)單例子和設(shè)置方法。
一直沒(méi)有找到,所以現(xiàn)在放到這里給大家看看,(只給想要入門(mén)的一個(gè)直觀的感應(yīng),呵呵)

首先當(dāng)然要新建一個(gè)項(xiàng)目

然后在PRoject Properties->Paths->Required Libraries->add->new 這里定義hibernate的類庫(kù) 把hibernate的lib下面的所有jar包進(jìn)去 當(dāng)然還有hibernate2.jar也要
然后一路ok下去就可以了。

再來(lái)就是hibernate.properties
從hibernate的src下面找到
把它拷到你項(xiàng)目的src目錄下
(什么,你的項(xiàng)目沒(méi)有src目錄,新建一個(gè)隨便的類就有src目錄了)

這樣一個(gè)JB下面的hibernate的開(kāi)發(fā)環(huán)境就好了

然后在hibernate.properties里面設(shè)置你的數(shù)據(jù)庫(kù)連接
默認(rèn)是HypersonicSQL

嗯 接下來(lái)的是你最想要做的事情了 其實(shí)很簡(jiǎn)單
新建一個(gè)類Message.java
代碼如下

代碼:
package hello;

import java.io.Serializable;

/**
* @author getdown
* @version 1.0
*/

public class Message implements Serializable {
private Long id;
private String text;
//定義一個(gè)簡(jiǎn)單鏈表 指向另外的一個(gè)Message
private Message nextMessage;
public Message() {}

public Message(Long id) {
this.id = id;
}

public Message(String text) {
this.text = text;
}

public Message(Long id, String text) {
this.id = id;
this.text = text;
}

public Long getId() {
return id;
}

private void setId(Long id) {
this.id = id;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}

public Message getNextMessage() {
return nextMessage;
}

public void setNextMessage(Message nextMessage) {
this.nextMessage = nextMessage;
}

}

接下來(lái)是這個(gè)類對(duì)應(yīng)的hibernate的配置文件 Message.hbm.xml

代碼:
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<!--定義類和表的對(duì)應(yīng)-->
<class
name="hello.Message"
table="Messages"
>
<!--定義ID字段和生成ID的策略 這里采用identity-->
<id name="id"
column="MESSAGE_ID"
>
<generator class="identity"/>
</id>
<!--定義里面的text字段-->
<property
name="text"
type="string">
<!--定義text字段在數(shù)據(jù)庫(kù)里面生成的方法-->
<column
name="TEXT"
length="100"
not-null="true"
/>
</property>
<!--定義對(duì)象關(guān)聯(lián)之間的對(duì)應(yīng)關(guān)系和關(guān)聯(lián)的字段-->
<many-to-one
name="nextMessage"
cascade="all"
column="NEXT_MESSAGE_ID"
/>
</class>
</hibernate-mapping>

然后就是測(cè)試類

代碼:
package hello;

import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.sessionFactory;
import net.sf.hibernate.tool.hbm2ddl.SchemaEXPort;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.type.LongType;
import net.sf.hibernate.Transaction;



/**
* @author getdown
* @version 1.0
*/

public class Hello {
public Hello() {
}

public static void main(String[] args) throws Exception {
Configuration cfg = new Configuration().addClass(Message.class);

/** 顧名思義 構(gòu)建表。。。第一次運(yùn)行的時(shí)候運(yùn)行下面語(yǔ)句可以在數(shù)據(jù)庫(kù)生成表
* 之后可以把下面這句去掉
* */
// new SchemaExport(cfg).create(true, true);

//先生成sessionFactory
SessionFactory sessions = cfg.buildSessionFactory();
//再?gòu)膕essionFactory得到一個(gè)session
Session session = sessions.openSession();
//開(kāi)始對(duì)數(shù)據(jù)庫(kù)的操作



/*----對(duì)數(shù)據(jù)庫(kù)的創(chuàng)建操作--------*/
Message message = new Message("helloWorld");
//創(chuàng)建一條記錄
session.save(message);
//存入記錄
session.flush();


/*---對(duì)數(shù)據(jù)庫(kù)的查詢操作---------------*/
// Message message = new Message();
// Query q = session.createQuery("from Message as message where message.id=1");
// message = (Message) q.list().get(0);
// message.getNextMessage().setText("helloNext");
// session.flush();
// session.close();
// Long id = new Long(1);
// Message message = (Message) session.find("from Message as message where message.id=?", id, Hibernate.LONG).get(0);
// System.out.println(message.getText());


// /*-------事務(wù)的處理----------------*/
// Transaction tx = session.beginTransaction();
// try {
// Message message = new Message("hello");
// session.save(message);
// session.flush();
// message = new Message("hello");
// session.save(message);
// session.flush();
// tx.commit();
// }
// catch (HibernateException ex) {
// tx.rollback();
// }

/*-------添加1000條記錄時(shí)間--------------*/
// Message message;
// long start = System.currentTimeMillis();
// for(int i = 0; i < 1000; i ++) {
// message = new Message("hello");
// session.save(message);
// session.flush();
// }
// long end = System.currentTimeMillis();
// System.out.println("添加1000條記錄時(shí)間---" + (end-start)/1000 + "s");



session.close();


}

}

ok了 運(yùn)行一下Hello看看出來(lái)什么吧
怎么樣 比起CMP的持久 hibernate的持久是不是顯得很輕量級(jí)。。
還可以試試看hibernate的性能 把Hello.java的最后一段注釋去掉運(yùn)行看看

當(dāng)然hibernate最重要的還是它的原理,還有很多很好的,很有趣的功能和O/RM設(shè)計(jì)思想等著你自己發(fā)掘。
多看看它自己的文檔,可以學(xué)到很多東西,它的文檔真的非常好。


呵呵 我是剛剛接觸hibernate不久 和所有hibernate的學(xué)習(xí)者共同學(xué)習(xí)
MSN : java_xml@msn.com

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 竹北市| 咸宁市| 元谋县| 富源县| 乐业县| 浠水县| 咸阳市| 房产| 渝北区| 专栏| 小金县| 广灵县| 尼勒克县| 汝城县| 绥中县| 黔东| 云浮市| 页游| 泌阳县| 乌鲁木齐县| 临高县| 托克逊县| 淮北市| 辽阳市| 临夏市| 泰宁县| 皋兰县| 二手房| 玉溪市| 惠水县| 惠东县| 甘洛县| 丽水市| 乐都县| 宁远县| 雷波县| 安康市| 河间市| 南靖县| 浮梁县| 鄢陵县|