第一個hibernate例子終于調試出來了

                很開心,直到昨天晚上,我的第一個hibernate例子才成功,之前大概經歷了1周以上的時間,沒辦法,我比較笨。
                在這里,我要記錄一下幾個一直困擾我,直到昨天才解決的問題,也是很多初學者會遇到的問題,希望能給更多的初學者一些提示,少走彎路。
                我用了eclipse3.1.1和myeclipse4.01,不過我覺得初學乍練還是不要用這樣的工具,最好是一步一步的,有利于你對hibernate的理解,對于我這樣子想要急于看到成果的,用個方便的ide也是不錯的選擇,廢話不說了,開始正題。
                對于myeclipse的配置和使用,請大家到網上查閱,這里不再贅述。
                首先,在eclipse里面創建一個web project,并且給這個項目add hibernate capabilities,一切設置保持默認就好,這樣之后你的項目就已經具備了hibernate的功能,接下來應該進行hibernate.cfg.xml的配置了,這一步實際上是連接數據庫。我把我的配置文件粘貼在下面:

          <?xml version='1.0' encoding='UTF-8'?>
          <!DOCTYPE hibernate-configuration PUBLIC
                    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                    "

          <!-- Generated by MyEclipse Hibernate Tools.                   -->
          <hibernate-configuration>

          <session-factory>
           <property name="myeclipse.connection.profile">thin</property>
           <!-- JDBC驅動程序 -->
           <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
           <!-- JDBC URL -->
           <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:test</property>
           <!-- 數據庫用戶名 -->
           <property name="connection.username">test</property>
           <!-- 數據庫密碼 -->
           <property name="connection.password">test</property>
          <!-- sql的方言,不同db的sql略有不同 -->
           <property name="dialect">org.hibernate.dialect.OracleDialect</property>
          <!-- 后臺顯示sql語句,主要是調試用-->
           <property name="show_sql">ture</property>

          </session-factory>

          </hibernate-configuration>

          現在你可以切換到eclipse的db視圖了,在那里你可以creat hibernate mapping,這樣,會自動的生成pojo,并且更新hibernate.cfg.xml。
                這個過程十分簡單,選擇好pojo的包,然后鼠標輕輕一點就會完成。
                接下來是編寫一個測試頁了,這里我只做了一個select頁面,里面的代碼:
          <%@ page language="java" import="hiber.*,org.hibernate.*,org.hibernate.cfg.*,java.util.*" pageEncoding="UTF-8"%>
          <!--hiber.*是這個項目pojo的包-->
          <%
          String path = request.getContextPath();
          String basePath =
          request.getScheme()
          +"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
          %>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>test hibernate</title>
          <meta http-equiv="pragma" content="no-cache">
          <meta http-equiv="cache-control" content="no-cache">
          <meta http-equiv="expires" content="0">
          <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
          <meta http-equiv="description" content="This is my page">
          <!--
          <link rel="stylesheet" type="text/css" href="styles.css">
          -->
          </head>
          <body>
          <%
                  Session ses 
          = null;
                  try{
                      SessionFactory sf
          =new Configuration().configure().buildSessionFactory();
                      ses
          =sf.openSession();
                      Query query
          =ses.createQuery("select t from Yhzd t");//這個的地方需要特別注意,這里的Yhzd是類名,不是表名,所以
                                                                                                                      //如果換成寫就會出錯誤,而且不能使用select * ,這里返回的
                                                                                                                      // 查詢結果也是類的list
                      List list
          =query.list();
                      out.print(
          "list's size is"+list.size()+" <br>");
                      Iterator it
          =list.iterator();
                      
          while(it.hasNext()){
                          //下面是我數據庫中的表,可以根據你的數據庫來改寫
                          Yhzd yhzd = (Yhzd)it.next();//這個地方卡了我很久,就是這個轉換,因為當初我用了select id from Yhzd t,而id本身不                                                                  //是一個yhzd的類,所以無法轉換。

                          out.println(
          "name=="+yhzd.getYhmc()+"   "+"yhlx=="+yhzd.getYhlx()+" <br>");
                      }
                  }catch(HibernateException e){
                      out.print(
          "error!!!!!!!!!!!!");
                      e.printStackTrace();
                  }finally{
                      
          if(ses != null) ses.close();
                  }
          %>
          </body>
          </html>
          整個例子完成了,由于時間比較少,所以沒有做add ,edit 和delete,如果哪位朋友想要的話可以留言聯系,我會盡快完成的。

          評論

          # re: 第一個hibernate例子終于調試出來了 2006-01-05 09:10 我特Java  回復  更多評論   

          頂,為你喝彩!

          # re: 第一個hibernate例子終于調試出來了 2006-01-05 11:32 sunny  回復  更多評論   

          呵呵,謝謝樓上哦

          # re: 第一個hibernate例子終于調試出來了 2006-01-06 10:28 cnsdl  回復  更多評論   

          hibernate很好的,我用了幾個月了感覺真不錯

          # re: 第一個hibernate例子終于調試出來了 2006-01-06 12:04 sunny  回復  更多評論   

          cnsdl,你好,hibernate是很好用,我正在啃書,嘿嘿,不過目前來說我是配合這struts一起學習的,感覺struts在充當視圖的方面還是很不錯滴

          # re: 第一個hibernate例子終于調試出來了 2006-01-09 18:03 angle  回復  更多評論   

          你好,不知道DB試圖怎么配得,我配不出來,你能寫個詳細的介紹及貼圖嗎?

          # re: 第一個hibernate例子終于調試出來了 2006-01-09 19:47 sunny  回復  更多評論   

          to angle,這個blog空間的附件上傳空間有限,我沒有辦法上傳太多的圖片,所以只能發一些文字性的東西,不過我這里不少資料,你可以參閱一下
          26879827 我的qq,申請時請注明 sunny的小屋,我會盡力幫你的,因為我也是新手,一起學習

          # re: 第一個hibernate例子終于調試出來了 2008-09-02 14:45   回復  更多評論   

          兄弟,恭喜,不過最好不要在jsp中寫一些連接數據庫的語句,如果把他們放在一個javabean就更好了!!!

          # re: 第一個hibernate例子終于調試出來了 2008-12-18 15:44 游客  回復  更多評論   

          樓上多的對,別把代碼寫到JSP 里面,都什么年代了

          # re: 第一個hibernate例子終于調試出來了[未登錄] 2009-10-27 13:39 小魚  回復  更多評論   

          謝謝,很有啟發
          主站蜘蛛池模板: 正镶白旗| 江山市| 安徽省| 阿勒泰市| 岑巩县| 凤山县| 保康县| 山西省| 漳州市| 兴隆县| 永顺县| 岑溪市| 岳普湖县| 铁力市| 万安县| 常宁市| 宁南县| 林周县| 绵竹市| 云梦县| 龙口市| 白山市| 大城县| 游戏| 拉萨市| 鹿邑县| 上虞市| 四平市| 琼结县| 徐闻县| 虹口区| 和林格尔县| 滦平县| 威海市| 徐水县| 罗山县| 龙里县| 赞皇县| 静安区| 利辛县| 利津县|