在Eclipse中写第一个hibernate小例子
生活随笔
收集整理的這篇文章主要介紹了
在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小例子就完成了,應該可以運行了
??? 首先,我們要創建一個數據庫,并生成一個表,來供hibernate訪問。在這里我們采用MySQL作為DBMS。我們的數據庫取名為hbtest,生成一個名叫EVENTS的表。生成數據庫的操作比較簡單,我就不介紹了,生成表的sql語句為:
??? 接下來,我們在src文件夾中創建一個名叫hibernate.cfg.xml的文檔,來對hibernate進行綜合配置,內容如下:
??? 接下來我們寫一個工具類。因為hibernate在執行的時候,總是要用到SessionFactory這個東西,而得到這個東西的方法稍微有點復雜,因此我們寫一個工具類,唯一的功能就是得到SessionFactory,這樣使用起來就很方便了,代碼如下:
??? 當所有的工作都做完后,這個項目的布局是如下圖所示:
??? 至此,最簡單的hibernate小例子就完成了,應該可以運行了
轉載于:https://www.cnblogs.com/liuzhuqing/archive/2012/08/06/7480751.html
總結
以上是生活随笔為你收集整理的在Eclipse中写第一个hibernate小例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj 2728(最小比率生成树)
- 下一篇: POJ 1848 (一道不错的树形dp)