日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Eclipse中写第一个hibernate小例子

發布時間:2025/4/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Eclipse中写第一个hibernate小例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在hibernate自帶的文檔中,包含了一個很簡單的小例子,不過這個小例子是基于ant的,而且說的不是很詳細,不利于新手學習。在這里,我將在Eclipse中實現這個例子,并給出詳細的實現步驟。
??? 首先,我們要創建一個數據庫,并生成一個表,來供hibernate訪問。在這里我們采用MySQL作為DBMS。我們的數據庫取名為
hbtest,生成一個名叫EVENTS的表。生成數據庫的操作比較簡單,我就不介紹了,生成表的sql語句為:
  • create?table?EVENTS?(
  • EVENT_ID?int(6)?AUTO_INCREMENT,
  • EVENT_DATE?date,
  • TITLE?varchar(20),
  • primary?key?(EVENT_ID));
  • ??? 接下來,我們在Eclipse中創建一個java項目。之后我們要寫一個javabean類,來和數據庫中的這個表來進行映射。很顯然,在上面的表中,包還3個字段,所以我們的這個javabean類中也包含3個屬性,具體代碼如下:
  • package?org.hibernate.tutorial.domain;
  • //上面的這個包路徑比較長,因為原例子中就是這樣,我沒有修改
  • 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)?{???
  • ????????//這里要注意,這個set方法是private的,
  • ????????//目的是不讓普通的程序員使用它,
  • ????????//但是hibernate框架還是可以通過反射機制訪問私有屬性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;
  • ????}
  • }
  • ??? 接下來,我們要寫一個配置文件,將上述javabean類和數據庫表映射起來。這個配置文件的名字叫做Event.hbm.xml,具體內容如下:
  • <?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>
  • ??? 在上述配置文件中,我們要注意如下事項:如果數據庫字段和javabean類屬性名字不同,則要明確指定映射關系,就像上面的第11行;名字相同就不用指定指定了,就像第12行。這個配置文件要放在哪里呢?我們只需在源代碼文件夾中新建一個文件夾,將其放進去就好了。具體在Eclipse中的操作為,建立一個名叫mapping的包(一個包就相當于一個文件夾),然后把這個配置文件放進去。
    ??? 接下來,我們在src文件夾中創建一個名叫hibernate.cfg.xml的文檔,來對hibernate進行綜合配置,內容如下:

  • <?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>
  • ????????<!--?數據庫連接設置,根據具體情況來,特別是用戶名和密碼?-->
  • ????????<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連接池(內置的)?-->
  • ????????<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"這個路徑要和我們上面講的對應起來,也就是我們新建了一個mapping包,然后把Event.hbm.xml這個配置文件放了進去。如果你的配置文件放在其他地方,這個設置就要修改。
    ??? 接下來我們寫一個工具類。因為hibernate在執行的時候,總是要用到SessionFactory這個東西,而得到這個東西的方法稍微有點復雜,因此我們寫一個工具類,唯一的功能就是得到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;
  • ????}
  • }
  • ??? 接下來,我們寫一個main函數,來檢測一下hibernate是否能夠成功運行,代碼如下:
  • 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();
  • ????????//建立一個Event對象并進行賦值
  • ????????Event?theEvent?=?new?Event();
  • ????????theEvent.setTitle(title);
  • ????????theEvent.setDate(theDate);
  • ????????//將該對象寫入數據庫
  • ????????session.save(theEvent);
  • ????????session.getTransaction().commit();
  • ????}
  • }
  • ??? 最后,特別注意,hibernate的運行是需要大量第三方類庫支持的,因此我們還需要將這些類庫導入到我們的這個項目中,同時還要把hibernate自帶的log4j配置文件也復制過來。這些內容都在hibernate的發布包中,大家自己找。
    ??? 當所有的工作都做完后,這個項目的布局是如下圖所示:



    ??? 至此,最簡單的hibernate小例子就完成了,應該可以運行了

    轉載于:https://www.cnblogs.com/liuzhuqing/archive/2012/08/06/7480751.html

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。