用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狂 阅读(2062) 评论(0)  编辑  收藏 所属分类: 开源框架


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(11)

随笔分类(48)

文章分类(29)

常去逛逛

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜