日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

在Eclipse中写第一个hibernate小例子

發(fā)布時(shí)間:2025/4/16 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Eclipse中写第一个hibernate小例子 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在hibernate自帶的文檔中,包含了一個(gè)很簡(jiǎn)單的小例子,不過這個(gè)小例子是基于ant的,而且說的不是很詳細(xì),不利于新手學(xué)習(xí)。在這里,我將在Eclipse中實(shí)現(xiàn)這個(gè)例子,并給出詳細(xì)的實(shí)現(xiàn)步驟。
??? 首先,我們要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù),并生成一個(gè)表,來供hibernate訪問。在這里我們采用MySQL作為DBMS。我們的數(shù)據(jù)庫(kù)取名為
hbtest,生成一個(gè)名叫EVENTS的表。生成數(shù)據(jù)庫(kù)的操作比較簡(jiǎn)單,我就不介紹了,生成表的sql語句為:
  • create?table?EVENTS?(
  • EVENT_ID?int(6)?AUTO_INCREMENT,
  • EVENT_DATE?date,
  • TITLE?varchar(20),
  • primary?key?(EVENT_ID));
  • ??? 接下來,我們?cè)贓clipse中創(chuàng)建一個(gè)java項(xiàng)目。之后我們要寫一個(gè)javabean類,來和數(shù)據(jù)庫(kù)中的這個(gè)表來進(jìn)行映射。很顯然,在上面的表中,包還3個(gè)字段,所以我們的這個(gè)javabean類中也包含3個(gè)屬性,具體代碼如下:
  • package?org.hibernate.tutorial.domain;
  • //上面的這個(gè)包路徑比較長(zhǎng),因?yàn)樵又芯褪沁@樣,我沒有修改
  • import?java.util.Date;
  • public?class?Event?{
  • ????private?Long?id;????
  • ????private?String?title;
  • ????private?Date?date;
  • ????public?Event()?{}
  • ????public?Long?getId()?{
  • ????????return?id;
  • ????}
  • ????private?void?setId(Long?id)?{???
  • ????????//這里要注意,這個(gè)set方法是private的,
  • ????????//目的是不讓普通的程序員使用它,
  • ????????//但是hibernate框架還是可以通過反射機(jī)制訪問私有屬性id
  • ????????this.id?=?id;
  • ????}
  • ????public?Date?getDate()?{
  • ????????return?date;
  • ????}
  • ????public?void?setDate(Date?date)?{
  • ????????this.date?=?date;
  • ????}
  • ????public?String?getTitle()?{
  • ????????return?title;
  • ????}
  • ????public?void?setTitle(String?title)?{
  • ????????this.title?=?title;
  • ????}
  • }
  • ??? 接下來,我們要寫一個(gè)配置文件,將上述javabean類和數(shù)據(jù)庫(kù)表映射起來。這個(gè)配置文件的名字叫做Event.hbm.xml,具體內(nèi)容如下:
  • <?xml?version="1.0"?encoding="UTF-8"?>
  • <!DOCTYPE?hibernate-mapping?PUBLIC
  • ????????"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
  • ????????"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  • <hibernate-mapping?package="org.hibernate.tutorial.domain">
  • ????<class?name="Event"?table="EVENTS">
  • ????????<id?name="id"?column="EVENT_ID">
  • ????????????<generator?class="native"?/>
  • ????????</id>
  • ????????<property?name="date"?type="timestamp"?column="EVENT_DATE"?/>
  • ????????<property?name="title"?/>
  • ????</class>
  • </hibernate-mapping>
  • ??? 在上述配置文件中,我們要注意如下事項(xiàng):如果數(shù)據(jù)庫(kù)字段和javabean類屬性名字不同,則要明確指定映射關(guān)系,就像上面的第11行;名字相同就不用指定指定了,就像第12行。這個(gè)配置文件要放在哪里呢?我們只需在源代碼文件夾中新建一個(gè)文件夾,將其放進(jìn)去就好了。具體在Eclipse中的操作為,建立一個(gè)名叫mapping的包(一個(gè)包就相當(dāng)于一個(gè)文件夾),然后把這個(gè)配置文件放進(jìn)去。
    ??? 接下來,我們?cè)趕rc文件夾中創(chuàng)建一個(gè)名叫hibernate.cfg.xml的文檔,來對(duì)hibernate進(jìn)行綜合配置,內(nèi)容如下:

  • <?xml?version='1.0'?encoding='utf-8'?>
  • <!DOCTYPE?hibernate-configuration?PUBLIC
  • ????"-//Hibernate/Hibernate?Configuration?DTD?3.0//EN"
  • ????"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  • ????????
  • <hibernate-configuration>
  • ????<session-factory>
  • ????????<!--?數(shù)據(jù)庫(kù)連接設(shè)置,根據(jù)具體情況來,特別是用戶名和密碼?-->
  • ????????<property?name="connection.driver_class">com.mysql.jdbc.Driver</property>
  • ????????<property?name="connection.url">jdbc:mysql://localhost:3306/hbtest</property>
  • ????????<property?name="connection.username">root</property>
  • ????????<property?name="connection.password">123456</property>
  • ????????<!--?JDBC連接池(內(nèi)置的)?-->
  • ????????<property?name="connection.pool_size">1</property>
  • ????????<!--?SQL語句的方言?-->
  • ????????<property?name="dialect">org.hibernate.dialect.HSQLDialect</property>
  • ????????<!--?Enable?Hibernate's?automatic?session?context?management?-->
  • ????????<property?name="current_session_context_class">thread</property>
  • ????????<!--?Disable?the?second-level?cache??-->
  • ????????<property?name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  • ????????<!--?Echo?all?executed?SQL?to?stdout?-->
  • ????????<property?name="show_sql">true</property>
  • ????????<!--?Drop?and?re-create?the?database?schema?on?startup?-->
  • ????????<property?name="hbm2ddl.auto">create</property>
  • ????????<mapping?resource="mapping/Event.hbm.xml"/>
  • ????</session-factory>
  • </hibernate-configuration>
  • ??? 大家注意上面的第25行,"mapping/Event.hbm.xml"這個(gè)路徑要和我們上面講的對(duì)應(yīng)起來,也就是我們新建了一個(gè)mapping包,然后把Event.hbm.xml這個(gè)配置文件放了進(jìn)去。如果你的配置文件放在其他地方,這個(gè)設(shè)置就要修改。
    ??? 接下來我們寫一個(gè)工具類。因?yàn)閔ibernate在執(zhí)行的時(shí)候,總是要用到SessionFactory這個(gè)東西,而得到這個(gè)東西的方法稍微有點(diǎn)復(fù)雜,因此我們寫一個(gè)工具類,唯一的功能就是得到SessionFactory,這樣使用起來就很方便了,代碼如下:
  • package?util;
  • import?org.hibernate.*;
  • import?org.hibernate.cfg.*;
  • public?class?HibernateUtil?{
  • ????private?static?final?SessionFactory?sessionFactory;
  • ????static?{
  • ????????try?{
  • ????????????//?Create?the?SessionFactory?from?hibernate.cfg.xml
  • ????????????sessionFactory?=?new?Configuration().configure().buildSessionFactory();
  • ????????}?catch?(Throwable?ex)?{
  • ????????????//?Make?sure?you?log?the?exception,?as?it?might?be?swallowed
  • ????????????System.err.println("Initial?SessionFactory?creation?failed."?+?ex);
  • ????????????throw?new?ExceptionInInitializerError(ex);
  • ????????}
  • ????}
  • ????public?static?SessionFactory?getSessionFactory()?{
  • ????????return?sessionFactory;
  • ????}
  • }
  • ??? 接下來,我們寫一個(gè)main函數(shù),來檢測(cè)一下hibernate是否能夠成功運(yùn)行,代碼如下:
  • package?events;
  • import?org.hibernate.Session;
  • import?java.util.Date;
  • import?util.HibernateUtil;
  • import?org.hibernate.tutorial.domain.Event;
  • public?class?EventManager?{
  • ????public?static?void?main(String[]?args)?{
  • ????????EventManager?mgr?=?new?EventManager();
  • ????????????mgr.createAndStoreEvent("My?Event",?new?Date());
  • ????????HibernateUtil.getSessionFactory().close();
  • ????}
  • ????private?void?createAndStoreEvent(String?title,?Date?theDate)?{
  • ????????Session?session?=?HibernateUtil.getSessionFactory().getCurrentSession();
  • ????????session.beginTransaction();
  • ????????//建立一個(gè)Event對(duì)象并進(jìn)行賦值
  • ????????Event?theEvent?=?new?Event();
  • ????????theEvent.setTitle(title);
  • ????????theEvent.setDate(theDate);
  • ????????//將該對(duì)象寫入數(shù)據(jù)庫(kù)
  • ????????session.save(theEvent);
  • ????????session.getTransaction().commit();
  • ????}
  • }
  • ??? 最后,特別注意,hibernate的運(yùn)行是需要大量第三方類庫(kù)支持的,因此我們還需要將這些類庫(kù)導(dǎo)入到我們的這個(gè)項(xiàng)目中,同時(shí)還要把hibernate自帶的log4j配置文件也復(fù)制過來。這些內(nèi)容都在hibernate的發(fā)布包中,大家自己找。
    ??? 當(dāng)所有的工作都做完后,這個(gè)項(xiàng)目的布局是如下圖所示:



    ??? 至此,最簡(jiǎn)單的hibernate小例子就完成了,應(yīng)該可以運(yùn)行了

    轉(zhuǎn)載于:https://www.cnblogs.com/liuzhuqing/archive/2012/08/06/7480751.html

    總結(jié)

    以上是生活随笔為你收集整理的在Eclipse中写第一个hibernate小例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。