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()); } } }