用hibernate3實現增刪改查

          程序結構圖

          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 16:40 我為J狂 閱讀(2077) 評論(0)  編輯  收藏 所屬分類: 開源框架

          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(11)

          隨筆分類(48)

          文章分類(29)

          常去逛逛

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 轮台县| 镇康县| 宁国市| 英吉沙县| 湖南省| 江西省| 牙克石市| 攀枝花市| 承德市| 昌图县| 怀来县| 兰州市| 吐鲁番市| 深水埗区| 双江| 余庆县| 洛隆县| 会泽县| 苍山县| 承德县| 临夏县| 岗巴县| 汝南县| 平泉县| 汶川县| 辽中县| 旬邑县| 闸北区| 榕江县| 交口县| 辉县市| 天全县| 泰安市| 仁寿县| 时尚| 延吉市| 会宁县| 北辰区| 杨浦区| 永济市| 莫力|