亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Hibernate入門

2019-11-18 13:56:26
字體:
供稿:網(wǎng)友

  本文配置環(huán)境:
JBuilder X
jdk 1.4.2
MySQL 4.0.11 驅(qū)動:mm.mysql-2.0.4-bin.jar(org.gjt.mm.mysql.Driver)
Hibernate 2.1

解壓Hibernate

打開JB,新建工程,名為:hibernate 
加入Hibernate需要的包與MYSQL驅(qū)動
步驟:file->new PRoject->name中輸入hibernate,Directory選擇你要存放本工程的路徑->next

->required libraries->add->new->name中輸入你要設(shè)置的hibernate包名/r

->add->選擇你hibernate解壓到的目錄,選中該目錄下的hibernate2.jar與lib目錄下的所有jar包,再把你的MYSQL驅(qū)動包也加進(jìn)去

然后一直按OK,next。

新建一個類,名為Hello_Bean.java,代碼如下:

 

package hibernate;

import java.io.Serializable;

/**
* @author geezer
QQ:9986986 MSN:geezer_hot@hotmail.com
*/

public class Hello_Bean implements Serializable {

private String name;//這里name與address和id的名字可以自己定,不會有什么影響.但get與set方法不可以。因為那得跟數(shù)據(jù)庫與配置文件對應(yīng)。

private String address;

private int id;



public Hello_Bean() {

}

public Hello_Bean(String name, String address) {//構(gòu)造函數(shù),看完本章以后相信你會明白的了
this.name = name;
this.address = address;
}

public String getName() {//此方法名必須與Hello_Bean.hbm.xml文件里的對應(yīng)的名字一樣,下面會具體講
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public int getId() {//必須的方法
return id;
}

public void setId(int id)//必須的方法
{
this.id = id;
}


}

 

完成這一步以后編譯/r

將hibernate解壓后的目錄下的src文件夾里的hibernate.properties與log4j.properties文件復(fù)制到你的工程目錄的classes目錄下

(例如hibernate/classes/目錄下),

打開hibernate.properties文件,找到

## HypersonicSQL

hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.passWord
hibernate.connection.url jdbc:hsqldb:hsql://localhost
hibernate.connection.url jdbc:hsqldb:test
hibernate.connection.url jdbc:hsqldb:.

改為

## HypersonicSQL

#hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
#hibernate.connection.driver_class org.hsqldb.jdbcDriver
#hibernate.connection.username sa
#hibernate.connection.password
#hibernate.connection.url jdbc:hsqldb:hsql://localhost
#hibernate.connection.url jdbc:hsqldb:test
#hibernate.connection.url jdbc:hsqldb:.

再找到

## MySQL

#hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
#hibernate.connection.driver_class org.gjt.mm.mysql.Driver
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username root
#hibernate.connection.password 

改為


## MySQL

hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/test
hibernate.connection.username root
hibernate.connection.password 

上面的URL請改為你自己的

完成以后創(chuàng)建一個空的文件,保存在你工程的類文件同個文件夾里(例如hibernate/classes/hibernate/目錄下),文件名為:Hello_Bean.hbm.xml

內(nèi)容如下:

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>

<class name="hibernate.Hello_Bean" table="test_hibernate" >

<id name="id" column="id">

<generator class="identity"/>

</id>

<property name="name" type="string" update="true" insert="true" column="name" />
<property name="address" type="string" update="true" insert="true" column="address" />

</class>

</hibernate-mapping>

 

稍微解釋一下,<class name="hibernate.Hello_Bean" table="test_hibernate" >里的name指你的生成表的類,

table則指定你要創(chuàng)建的數(shù)據(jù)庫表的名字,可以自由修改,沒有影響.

<id name="id" column="id">設(shè)置主鍵ID,這里name的值id跟Hello_Bean.java里的方法getId與setId對應(yīng),不用管這個,hibernate會自動調(diào)用,配置好就可以了,column的值為要生成的字段名,可以自由修改,沒有影響。

<generator class="identity"/>屬性讓主鍵的ID自增(插入數(shù)據(jù)的時候自動加1)

<property name="name" type="string" update="true" insert="true" column="name" />這里的name值"name"跟Hello_Bean.java里的getName方法對應(yīng),column為要生成的字段名/r
<property name="address" type="string" update="true" insert="true" column="address" />

分別添加一個字段name與address,注重這里的type屬性類型為string,假如這里的類型與Hello_Bean.java里設(shè)置的類型不一樣會出錯。

修改完以后保存。

最后在JB里新建一個類,名字為Hello.java,我會一步步解釋,代碼如下:

 

package hibernate;

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;
import net.sf.hibernate.ScrollableResults;
import java.util.*;

/**
* @author geezer
* QQ:9986986 MSN:geezer_hot@hotmail.com
*/


public class Hello {


public Hello() {


}

public static void main(String[] args) throws Exception {

Configuration cfg = new Configuration().addClass(Hello_Bean.class);//用Hello_Bean.class類初始化

SessionFactory sessions = cfg.buildSessionFactory();//用buildSessionFactory方法得到一個SessionFactory對象/r

Session session = sessions.openSession();//再用SessionFactory的openSession方法得到一個session

 

new SchemaExport(cfg).create(true, true);//這句意思是創(chuàng)建表,第一次運行以后,就是創(chuàng)建完表以后再把這行加上注釋。假如建表以后不把這一句注釋掉的話會刪掉以前創(chuàng)建的表再重新建一個。


 

Hello_Bean my_hibernate = new Hello_Bean();//得到一個Hello_Bean對象/r

my_hibernate.setName("my_name");//設(shè)置Hello_Bean對象的name值為my_name,這里其實就是說把字符串my_name當(dāng)作數(shù)據(jù)庫字段name的值.數(shù)據(jù)庫字段name與Hello_Bean類里的getName,setName方法是對應(yīng)的。形成一個映射關(guān)系。

my_hibernate.setAddress("my_address");//如上

session.save(my_hibernate);//這句很重要,將my_hibernate對象寫進(jìn)數(shù)據(jù)庫(my_hibernate對象里的name與address我們剛剛已經(jīng)設(shè)置了值了,會直接把name,address的值寫進(jìn)數(shù)據(jù)庫去)

session.flush();
session.close();


//上面是一個簡單的插入數(shù)據(jù)與第一次運行建表的介紹,下面我再介紹刪除與修改的方法,下面的代碼我都加了注釋,自己需要什么方法(刪除,修改,循環(huán)數(shù)據(jù)庫的值)就把注釋去掉就可以了
HSQL比較簡單,大家看一下例子就應(yīng)該明白了,這里就不講了。
遍歷數(shù)據(jù)庫的方法有三種,分別是Query,find,iterate,Query和find返回一個List接口,iterate返回一個Iterator,具體方法可以查看這些類得知。

//刪除數(shù)據(jù)
/*
int a=session.delete("from Hello_Bean where id=1");//假如沒有找到id為1的數(shù)據(jù)那么返回0,假如找到返回1,這里的Hello_Bean是我們的Hello_Bean類,他跟數(shù)據(jù)庫表對應(yīng),所以我們在這里是直接用Hello_Bean來代碼數(shù)據(jù)庫表的。
System.out.println(a);
session.flush();
session.close();

*/

//Query方法查詢數(shù)據(jù)
/*
Hello_Bean my_hibernate = null;
Query q = session.createQuery("from Hello_Bean");
// Query q = session.createQuery("from Hello_Bean where name=?");//這里的?跟JDBC的PreparedStatement方法的差不多,只不過這里的是以0開始,jdbc的是1開始。
// q.setString(0,"my_name");
// q.setFirstResult(0);//這句話的意思是說查詢結(jié)果從第幾行開始列出數(shù)據(jù)
// q.setMaxResults(3);//這句話的意思是取多少條數(shù)據(jù),就跟SQL SERVER的TOP方法和MYSQL的LIMIT方法一樣的意思。
// ScrollableResults sc=q.scroll();//得到一個ScrollableResults,可滾動的,假如你的數(shù)據(jù)庫支持游標(biāo)自由移動的話可以加上,也就是說可以判定查詢結(jié)果有沒有值,或者移動到下一行記錄等等。

// if(!sc.next())
// {
// System.out.println("沒有找到你需要的數(shù)據(jù)");
// }

session.flush();//假如使用了ScrollableResults的話請把這行注釋掉/r
session.close();//假如使用了ScrollableResults的話請把這行注釋掉/r

List l=q.list();//返回一個List接口,用來遍歷結(jié)果集

for(int i=0;i<l.size();i++){
my_hibernate = (Hello_Bean) l.get(i);//從List中取得一個my_hibernate對象/r
System.out.println(my_hibernate.getName());//調(diào)用my_hibernate對象的getName方法取得數(shù)據(jù)庫name字段的值

}

*/

//find方法查詢數(shù)據(jù)
/*
Hello_Bean my_hibernate = null;
List q = session.find("from Hello_Bean");
session.flush();
session.close();

for(int i=0;i<q.size();i++)
{
my_hibernate = (Hello_Bean) q.get(i);
System.out.println(my_hibernate.getName());
}
*/

//iterate方法查詢數(shù)據(jù)
/*
Hello_Bean my_hibernate = null;
Iterator q = session.iterate("from Hello_Bean");

while(q.hasNext())
{
my_hibernate = (Hello_Bean) q.next();
System.out.println(my_hibernate.getName());
}

*/

//修改數(shù)據(jù)
/*
Query qq=session.createQuery("from Hello_Bean");

Hello_Bean my_hibernate=(Hello_Bean)session.load(Hello_Bean.class,new Integer(2));
//這里的new Integer(2)意思是修改表中id為2的那一行數(shù)據(jù),必須是一個包裝類的對象,假如使用int的話會出錯。
my_hibernate.setName("geezer");//把id為2的那一行數(shù)據(jù)的name字段值改為"geezer"
session.flush();
session.close();

*/

}

}

最后運行就可以了。

假如大家有什么不清楚的,可以下載這篇文章的例子看看,運行一下。

下載完以后用JB打開hibernate.jpx就可以了。用之前把hibernate和MYSQL的驅(qū)動加進(jìn)去,方法假如不知道再看看本章開頭部分。


常見錯誤:
Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
假如出現(xiàn)這行錯誤說明你的xml配置文件有不規(guī)范的字符,檢查下。

net.sf.hibernate.MappingException: Error reading resource: hibernate/Hello_Bean.hbm.xml


假如出現(xiàn)這行錯誤說明你的hibernate的XML配置文件有錯/r

net.sf.hibernate.MappingException: Resource: hibernate/Hello_Bean.hbm.xml not found


假如出現(xiàn)這行錯誤說明hibernate的XML配置文件沒有找到,你應(yīng)該把XML文件放在與你的類文件同個目錄下,本文中是放在hibernate/classes/hibernate/目錄下,也就是跟Hello_Bean.class類文件一起。

net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean


假如出現(xiàn)這行錯誤說明你的xml文件里設(shè)置的字段名name的值與Hello_Bean.java類里的getXXX或setXXX方法不一致。

net.sf.hibernate.HibernateException: JDBC Driver class not found: org.gjt.mm.mysql.Driver
假如出現(xiàn)這行錯誤說明你的MYSQL驅(qū)動沒有加進(jìn)JB庫里或者不在CLASSPATH里。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国内精品一区视频| 久久久久久久久久看片| 亚洲精品自拍视频在线观看| 欧美xxxx中国| 欧美一级欧美一级在线播放| 国产日韩精品视频一区二区三区| 成人亚洲一区二区三区| 搞黄视频在线观看| 亚洲精品一区二区毛豆| 亚洲在线视频福利| 美女喷白浆视频| 亚洲欧洲精品一区二区精品久久久| 久久一留热品黄| 亚欧日韩另类中文欧美| 色域天天综合网| 国内在线高清免费视频| 亚洲国产精品成人va在线观看| www.av一区视频| 久久99精品久久久久久水蜜桃| 逼特逼视频在线| 亚洲黄色av| 第一福利永久视频精品| 成年人视频在线| 一区二区三区国产盗摄| 丝袜美腿美女被狂躁在线观看| 国产精品综合在线视频| 亚洲色图综合图区| 伊人再见免费在线观看高清版| 天堂日韩电影| 亚洲成人教育av| 国产黄色大片免费看| 男人天堂手机在线视频| 国精产品一区一区三区视频| 大胆欧美人体视频| 成人免费不卡视频| 日韩成人动漫在线观看| 国产精品综合一区二区三区| 在线播放网站| 久久综合色之久久综合| 欧美疯狂做受xxxx高潮| 亚洲精品一区二区三区在线观看| 丁香综合在线| 中文字幕 自拍偷拍| 国产情侣一区二区三区| 欧美日高清视频| 久久99精品网久久| 99久久精品免费看国产一区二区三区| 先锋影音一区二区三区| 国产激情美女久久久久久吹潮| 在线免费观看视频| 久久久久久久久久久久久国产| 欧美xxxxx视频| 免费三片60分钟| 欧美日韩伦理| 色偷偷偷亚洲综合网另类| 给我看免费高清在线观看| 国产免费xxx| 亚洲欧美日韩不卡| xxww在线观看| 成人黄色av网站在线| 欧美成人一区二区三区电影| 日韩欧美高清dvd碟片| 伊人手机在线视频| 91在线视频免费播放| 在线免费观看成人短视频| 日批视频免费在线观看| 国产乱码一区二区三区四区| 国产不卡精品一区二区三区| 伊人久久综合一区二区| 欧美成人一区二区三区片免费| 欧美精品一区二区三区在线看午夜| 国产大片中文字幕| 国产精品电影在线观看| 久久悠悠精品综合网| 欧美日韩四区| 亚洲欧美在线观看| 91精品国产综合久久香蕉的用户体验| 国产无人区码熟妇毛片多| 一个人看的视频www在线观看免费| 雨宫琴音一区二区在线| 日韩综合视频在线观看| 欧美在线资源| 极品束缚调教一区二区网站| 91成人抖音| 视频免费在线观看| 亚洲网在线观看| 国产精品高清无码在线观看| 日本免费在线播放| 99久久精品费精品国产| 国产成人自拍高清视频在线免费播放| 成人国内精品久久久久一区| 国产66精品久久久久999小说| 成视人a免费观看视频| 国产成人自拍视频在线观看| 超碰免费在线公开| 精品黑人一区二区三区久久| 91福利精品第一导航| 国产一区二区三区网站| 久久国产精品99久久久久久丝袜| 国产黄色一区二区| 五月天综合视频| 欧美一区二区三区喷汁尤物| 在线看福利影| 亚州精品永久观看视频| 99久久综合99久久综合网站| 亚洲一区自拍偷拍| 高清视频一区二区| 国产日本欧洲亚洲| 欧美一区二区三区成人久久片| 在线观看视频亚洲| 亚洲一区二区精品3399| 日本精品视频网站| 麻豆成人入口| 日本五十熟hd丰满| 亚洲一区在线观看网站| 欧美1区免费| 91视频88av| 欧美午夜精品| 日本福利视频导航| 中文字幕在线观看视频www| 国产精品爱久久久久久久小说| 好看的视频你懂的| 麻豆网站免费在线观看| 天天色天天射天天综合网| 欧美午夜精品一区二区蜜桃| 无码人妻丰满熟妇精品区| 黄网址在线播放免费| 国产porn视频| www.av导航| 粉嫩av一区二区三区免费观看| 欧美大胆的人体xxxx| 中文字幕九色91在线| 在线成人免费av| 欧美日韩中文字幕一区二区| 精品国产户外野外| h片在线观看免费| 国产免费黄色一级片| 无码少妇精品一区二区免费动态| 欧美精品一区二区三区中文字幕| 亚洲色图18p| 99久久99久久精品免费看蜜桃| 免费一级毛片在线观看| 日韩av免费在线播放| 秋霞av亚洲一区二区三| 一道本视频在线观看| 欧美电影免费观看网站| 亚洲国产精品t66y| ...xxx性欧美| 美女又爽又黄视频毛茸茸| 成人性生交大片免费看96| 欧美日韩国产二区| 久久99精品久久久久婷婷| 欧美性受xxxx黑人xxxx| 午夜精品一区| 日韩av在线天堂网| 久草中文综合在线| 天天色综合6| 亚洲国产午夜精品| 91九色成人| 精品亚洲a∨一区二区三区18| 国产www精品| 日韩伦理在线视频| 欧美色图五月天| 日本高清久久| 欧美丝袜美女中出在线| 97超级碰碰碰| 国产精品538一区二区在线| 在线播放一区二区精品视频| 欧美刺激午夜性久久久久久久| 久久精品人人做人人爽97| 成人高清在线观看免费| 在线成人综合色一区| 国产一区二区视频免费在线观看| 亚洲久本草在线中文字幕| 亚洲视频免费观看| www.日本视频| 日韩精品另类天天更新| 综合区小说区图片区在线一区| 国产亚洲视频系列| 欧美xxxxb| 欧美三级在线免费观看| 欧美精品国产精品日韩精品| 女人高潮一级片| 天天看天天操| 久久久亚洲精品视频| 伦理欧美一区| 国产成人免费高清视频| 亚洲二区视频在线| 91国产精品成人| 丰满少妇xbxb毛片日本| 欧美一区二区综合| 俺去啦最新官网| 日批免费观看视频| 亚洲色图插插| 天天色综合4| 麻豆精品av| 亚洲久久在线| 亚洲激情视频在线播放| 九九热这里有精品| 日本免费高清视频| 国产乱子伦三级在线播放| 一区av在线播放| 永久免费看片在线播放| 免费日韩在线视频| 农村少妇一区二区三区四区五区| 国产综合图区| 91高潮大合集爽到抽搐| caoporn国产精品免费视频| 国产精品美乳在线观看| 国产亚洲精品美女久久| 日韩一区二区在线免费| 国产一区二区在线电影| 四虎www4hu永久免费| 国产成人福利片| 羞羞网站在线观看入口免费| 亚洲综合第一| 午夜精品久久久久久久久久久久久蜜桃| 香港三级经典全部种子下载| av电影网站在线观看| 中文字幕免费一区二区三区| 日本高清视频www| 久久影视一区二区| 久久精品一区中文字幕| 色婷婷精品大视频在线蜜桃视频| 91久久久精品国产| 动漫av网站免费观看| 日本成人一区二区三区| 亚洲精品v欧美精品v日韩精品| 91嫩草亚洲精品| 97婷婷大伊香蕉精品视频| 青娱乐国产盛宴| 国产一区二区三区久久| 天天综合网 天天综合色| 99se视频在线观看| 羞羞视频在线观看欧美| 午放福利视频在线播放| 国产青青在线视频| 99精品热6080yy久久| 蜜臀久久99精品久久久久久| 男女激情视频一区| 亚洲精品一区二区在线观看| 久久99国产精一区二区三区| 亚洲一道本在线| 久久久久久久久99| 久久精品一本| 免费视频二区| 国产日韩欧美第一页| av免费精品一区二区三区| 日韩电影免费观| 成人av免费在线看| www.女人的天堂.com| 亚洲国产欧美一区| 91在线中文字幕| 小向美奈子av| 成人h动漫精品一区二区无码| 国产精品啊v在线| 日韩hd视频在线观看| 欧美午夜宅男影院在线观看| 日韩在线视频精品| 国产精品久久久久久久久久新婚| 在线国产99| 99久热这里只有精品视频免费观看| 国产精品com| 欧美性大战久久久久久久蜜臀| 成人噜噜噜噜| 日本三级欧美三级| 免费在线观看亚洲视频| 蜜臀99久久精品久久久久小说| 久久精品无码av| 亚洲成va人在线观看| 国产精品国产成人国产三级| 九色成人国产蝌蚪91| 女生裸体视频一区二区三区| 国产97在线 | 亚洲| 国产亚洲精品久久久久久久| 日韩有码在线电影| 欧美理论电影在线观看| 国产精品久久久久久久免费软件| 9l国产精品久久久久麻豆| 日韩在线视频免费| 99精品视频在线观看播放| av免费在线免费观看| 一区二区三区精品99久久| av大全在线| 成年人视频观看| 久久综合亚洲色hezyo国产| 色呦呦国产精品| 操她视频网站| 美女久久久精品| 群体交乱之放荡娇妻一区二区| 麻豆网站在线免费观看| 国产精品99精品一区二区三区∴| 精品国产亚洲一区二区麻豆| 色综合视频在线观看| 四虎国产精品永久在线国在线| 亚洲人午夜射精精品日韩| 国产精品久久久久一区| 中文字幕在线看视频国产欧美| 国产一级aa大片毛片| 国产精品扒开腿爽爽爽视频| 国语自产偷拍精品视频偷| 日本免费精品| 国产精品美女久久福利网站| 女女互磨互喷水高潮les呻吟| 日韩精品一区二区三区av| 亚洲一区二区天堂| 777丰满影院| 免费国产自久久久久三四区久久| 青青青爽在线视频免费观看| 中文文字幕文字幕高清| 日本不卡1234视频| 天堂av电影在线观看| 在线国产99| 精品999日本久久久影院| 四虎一区二区三区| 一区二区三区视频免费看| 国产乱码精品一区二区三区五月婷| 一级免费视频| 亚洲人成电影网站色mp4| 老司机成人在线| 亚洲第一黄色| 国产成a人亚洲精| 亚洲欧洲国产日韩| 最近国产精品视频| 久久精品国产亚洲av香蕉| 欧美成人精品激情在线视频| 日韩激情免费| 草莓污污视频在线观看|