隨筆-208  評論-469  文章-30  trackbacks-0
          程序結構圖

          SQLServer中的表設計

          db.HibernateUtil
          package?db;

          import?org.hibernate.HibernateException;
          import?org.hibernate.Session;
          import?org.hibernate.SessionFactory;
          import?org.hibernate.cfg.Configuration;

          /**
          ?*?Configures?and?provides?access?to?Hibernate?sessions,?tied?to?the?current
          ?*?thread?of?execution.?Follows?the?Thread?Local?Session?pattern,?see
          ?*?{
          @link?http://hibernate.org/42.html}.
          ?
          */

          public?class?HibernateUtil
          {

          ????
          /**
          ?????*?Location?of?hibernate.cfg.xml?file.?NOTICE:?Location?should?be?on?the
          ?????*?classpath?as?Hibernate?uses?#resourceAsStream?style?lookup?for?its
          ?????*?configuration?file.?That?is?place?the?config?file?in?a?Java?package?-?the
          ?????*?default?location?is?the?default?Java?package.<br>
          ?????*?<br>
          ?????*?Defaults:?<br>
          ?????*?<code>CONFIG_FILE_LOCATION?=?"/hibernate.conf.xml"</code>?You?can
          ?????*?change?location?with?setConfigFile?method?session?will?be?rebuilded?after
          ?????*?change?of?config?file
          ?????
          */

          ????
          private?static?String?CONFIG_FILE_LOCATION?=?"/hibernate.cfg.xml";

          ????
          private?static?final?ThreadLocal?threadLocal?=?new?ThreadLocal();

          ????
          private?static?Configuration?configuration?=?new?Configuration();

          ????
          private?static?SessionFactory?sessionFactory;

          ????
          private?static?String?configFile?=?CONFIG_FILE_LOCATION;

          ????
          private?HibernateUtil()
          ????
          {
          ????}


          ????
          /**
          ?????*?Returns?the?ThreadLocal?Session?instance.?Lazy?initialize?the
          ?????*?<code>SessionFactory</code>?if?needed.
          ?????*?
          ?????*?
          @return?Session
          ?????*?
          @throws?HibernateException
          ?????
          */

          ????
          public?static?Session?getCurrentSession()?throws?HibernateException
          ????
          {
          ????????Session?session?
          =?(Session)?threadLocal.get();

          ????????
          if?(session?==?null?||?!session.isOpen())
          ????????
          {
          ????????????
          if?(sessionFactory?==?null)
          ????????????
          {
          ????????????????rebuildSessionFactory();
          ????????????}

          ????????????session?
          =?(sessionFactory?!=?null)???sessionFactory.openSession()
          ????????????????????:?
          null;
          ????????????threadLocal.set(session);
          ????????}


          ????????
          return?session;
          ????}


          ????
          /**
          ?????*?Rebuild?hibernate?session?factory
          ?????*?
          ?????
          */

          ????
          public?static?void?rebuildSessionFactory()
          ????
          {
          ????????
          try
          ????????
          {
          ????????????configuration.configure(configFile);
          ????????????sessionFactory?
          =?configuration.buildSessionFactory();
          ????????}
          ?catch?(Exception?e)
          ????????
          {
          ????????????System.err.println(
          "%%%%?Error?Creating?SessionFactory?%%%%");
          ????????????e.printStackTrace();
          ????????}

          ????}


          ????
          /**
          ?????*?Close?the?single?hibernate?session?instance.
          ?????*?
          ?????*?
          @throws?HibernateException
          ?????
          */

          ????
          public?static?void?closeCurrentSession()?throws?HibernateException
          ????
          {
          ????????Session?session?
          =?(Session)?threadLocal.get();
          ????????threadLocal.set(
          null);

          ????????
          if?(session?!=?null)
          ????????
          {
          ????????????session.close();
          ????????}

          ????}


          ????
          /**
          ?????*?return?session?factory
          ?????*?
          ?????
          */

          ????
          public?static?SessionFactory?getSessionFactory()
          ????
          {
          ????????
          return?sessionFactory;
          ????}


          ????
          /**
          ?????*?return?session?factory
          ?????*?
          ?????*?session?factory?will?be?rebuilded?in?the?next?call
          ?????
          */

          ????
          public?static?void?setConfigFile(String?configFile)
          ????
          {
          ????????HibernateUtil.configFile?
          =?configFile;
          ????????sessionFactory?
          =?null;
          ????}


          ????
          /**
          ?????*?return?hibernate?configuration
          ?????*?
          ?????
          */

          ????
          public?static?Configuration?getConfiguration()
          ????
          {
          ????????
          return?configuration;
          ????}


          }
          model.User
          package?model;

          public?class?User
          {
          ????
          private?Integer?id;

          ????
          private?String?username;

          ????
          private?String?password;
          ????
          public?User()
          ????
          {
          ????????
          ????}


          ????
          public?User(?String?password)
          ????
          {
          ????????
          this.password?=?password;
          ????}


          ????
          public?Integer?getId()
          ????
          {
          ????????
          return?id;
          ????}


          ????
          public?void?setId(Integer?id)
          ????
          {
          ????????
          this.id?=?id;
          ????}


          ????
          public?String?getPassword()
          ????
          {
          ????????
          return?password;
          ????}


          ????
          public?void?setPassword(String?password)
          ????
          {
          ????????
          this.password?=?password;
          ????}


          ????
          public?String?getUsername()
          ????
          {
          ????????
          return?username;
          ????}


          ????
          public?void?setUsername(String?username)
          ????
          {
          ????????
          this.username?=?username;
          ????}

          }

          model.hbm.xml
          <?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="model.User"?table="user1"?>
          <id?name="id">
          <generator?class="identity"/>
          </id>
          <property?name="username"/>
          <property?name="password"/>
          </class>
          </hibernate-mapping>
          hibernate.cfg.xml
          <?xml?version='1.0'?encoding='UTF-8'?>
          <!DOCTYPE?hibernate-configuration?PUBLIC
          ??????????"-//Hibernate/Hibernate?Configuration?DTD?2.0//EN"
          ??????????"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"
          >

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

          <session-factory>
          ????
          <property?name="dialect">org.hibernate.dialect.SQLServerDialect</property>
          ????
          <property?name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login</property>
          ????
          <property?name="connection.username">lzqdiy</property>
          ????
          <property?name="connection.password">lzqdiy</property>
          ????
          <property?name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
          ????
          <property?name="myeclipse.connection.profile">conn2</property>
          ????
          <mapping?resource="model/model.hbm.xml"?/>
          </session-factory>

          </hibernate-configuration>
          HibernateTest

          import?java.util.Iterator;
          import?java.util.List;

          import?org.hibernate.HibernateException;
          import?org.hibernate.Query;
          import?org.hibernate.Session;
          import?org.hibernate.Transaction;
          import?model.User;
          import?db.HibernateUtil;

          public?class?HibernateTest
          {

          ????
          /**
          ?????*?
          @param?args
          ?????*?
          @throws?HibernateException
          ?????
          */

          ????
          public?void?insertUser()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????User?user?
          =?new?User();
          ????????user.setUsername(
          "lzqdiy");
          ????????user.setPassword(
          "lzqdiy");
          ????????session.save(user);
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "新增成功!");
          ????}


          ????
          public?List?getUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????String?hql?
          =?"select?new?User(password)?from?model.User??where?username=:name";
          ????????Query?query?
          =?session.createQuery(hql);
          ????????query.setString(
          "name",?"lzqdiy");
          ????????List?list?
          =?query.list();
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????
          return?list;
          ????}

          ????
          public?void?updateUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????String?hql?
          =?"update??User??set?password='gm'?";
          ????????Query?query?
          =?session.createQuery(hql);
          ????????query.executeUpdate();
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "更新成功!");
          ????}

          ????
          public?void?deleteUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????String?hql?
          =?"delete??User??where?id=1";
          ????????Query?query?
          =?session.createQuery(hql);
          ????????query.executeUpdate();
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "刪除成功!");
          ????}


          ????
          public?static?void?main(String[]?args)?
          ????
          {
          ????????
          //?TODO?Auto-generated?method?stub
          ????????new?HibernateTest().insertUser();
          ????????
          new?HibernateTest().updateUsers();
          ????????
          new?HibernateTest().deleteUsers();
          ????????List?list?
          =?new?HibernateTest().getUsers();
          ????????
          for?(Iterator?iter?=?list.iterator();?iter.hasNext();)
          ????????
          {
          ????????????User?user?
          =?(User)?iter.next();
          ????????????System.out.println(user.getPassword());
          ????????}

          ????}

          }

          其中使用的hql語句比較初級,大家不要見笑,以后我將做深入的研究。
          補充:其實對于更新和刪除并不需要使用hql就可以實現。
          將HibernateTest更改如下,同樣可以實現更新和刪除。

          import?java.util.Iterator;
          import?java.util.List;

          import?org.hibernate.HibernateException;
          import?org.hibernate.Query;
          import?org.hibernate.Session;
          import?org.hibernate.Transaction;
          import?model.User;
          import?db.HibernateUtil;

          public?class?HibernateTest
          {

          ????
          /**
          ?????*?
          @param?args
          ?????*?
          @throws?HibernateException
          ?????
          */

          ????
          public?void?insertUser()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????User?user?
          =?new?User();
          ????????user.setUsername(
          "lzqdiy");
          ????????user.setPassword(
          "lzqdiy");
          ????????session.save(user);
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "新增成功!");
          ????}


          ????
          public?List?getUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????String?hql?
          =?"select?new?User(password)?from?model.User??where?username=:name";
          ????????Query?query?
          =?session.createQuery(hql);
          ????????query.setString(
          "name",?"lzqdiy");
          ????????List?list?
          =?query.list();
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????
          return?list;
          ????}

          ????
          public?void?updateUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????User?user
          =new?User();
          ????????user.setId(
          new?Integer(1));
          ????????user.setUsername(
          "lzqdiy");
          ????????user.setPassword(
          "gm");
          ????????session.saveOrUpdate(user);
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "更新成功!");
          ????}

          ????
          public?void?deleteUsers()?
          ????
          {
          ????????Session?session?
          =?HibernateUtil.getCurrentSession();
          ????????Transaction?tx?
          =?session.beginTransaction();
          ????????User?user
          =new?User();
          ????????user.setId(
          new?Integer(1));
          ????????session.delete(user);
          ????????tx.commit();
          ????????HibernateUtil.closeCurrentSession();
          ????????System.out.println(
          "刪除成功!");
          ????}


          ????
          public?static?void?main(String[]?args)?
          ????
          {
          ????????
          //?TODO?Auto-generated?method?stub
          ????????new?HibernateTest().insertUser();
          ????????
          new?HibernateTest().updateUsers();
          ????????
          new?HibernateTest().deleteUsers();
          ????????List?list?
          =?new?HibernateTest().getUsers();
          ????????
          for?(Iterator?iter?=?list.iterator();?iter.hasNext();)
          ????????
          {
          ????????????User?user?
          =?(User)?iter.next();
          ????????????System.out.println(user.getPassword());
          ????????}

          ????}

          }

          posted on 2007-06-10 21:43 EricWong 閱讀(2259) 評論(1)  編輯  收藏

          評論:
          # re: 用hibernate3實現增刪改查 [未登錄] 2007-08-09 15:36 | haha
          頂  回復  更多評論
            
          # re: 用hibernate3實現增刪改查 2007-09-06 16:15 | 吳楊明
          好 在學hibernate 應用
          謝謝啦 我的博客 www.aygfsteel.com/coacoa2008
          大家一起進步  回復  更多評論
            
          # re: 用hibernate3實現增刪改查 2007-09-06 16:56 | 吳楊明

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          留言簿(44)

          隨筆分類(120)

          相冊

          收藏夾(15)

          links

          搜索

          •  

          最新評論

          閱讀排行榜

          51La
          主站蜘蛛池模板: 新乡市| 孟连| 漠河县| 个旧市| 潮安县| 湖州市| 图木舒克市| 托里县| 双鸭山市| 上高县| 乐至县| 集安市| 德格县| 灵山县| 报价| 黄大仙区| 承德市| 昔阳县| 应用必备| 皮山县| 英德市| 兰考县| 嵊泗县| 宁夏| 曲阳县| 呼图壁县| 桃源县| 建平县| 泽库县| 巴彦县| 罗江县| 原平市| 南漳县| 托克逊县| 浮梁县| 北流市| 萨嘎县| 澎湖县| 长阳| 城固县| 宜兰县|