案例名称:Hibernate完成增删改查
案例描述:抽取出工具类并完成删除、修改、查询功能。
具体过程:
1、使用上面的例子(Hibernate――(1)Hibernate入门http://blog.csdn.net/dawanganban/article/details/13748235)
2、新建HibernateUtils :用于封装创建Session的方法。
package com.xsyu.tts.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static Configuration conf; private static SessionFactory factory; // conf 对象只要加载一次就可以了 // 如果放入 openSession 方法中效率会降低 static { conf = new Configuration(); conf.configure(); factory = conf.buildSessionFactory(); } public static Session openSession() { return factory.openSession(); } }
如上面代码中,每个用户对应一个Session,但是SessionFactory是共享的
删除指定ID的User
3、修改TestHibernate
增加方法test2(),用于删除指定ID的User
/* * 删除指定ID的User */ public void tst2() { Session session = HibernateUtils.openSession(); User user = new User(); user.setId(1); // 方式1 /* * Transaction tx = session.getTransaction(); tx.begin(); */ // 方式2:简写 Transaction tx = session.beginTransaction(); session.delete(user); tx.commit(); session.close(); }4、测试
(1)运行TestHibernate
(2)查看数据库
更改指定ID的User
5、修改TestHibernate
/** * 更改User */ @Test public void tst3() { User user = new User(); user.setId(3); user.setLoginName("ssh"); user.setPassword("xyz"); user.setName("Hibernate"); Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); session.update(user); tx.commit(); session.close(); }6、测试
查询所有的User
7、修改TestHibernate
/** * 查询所有的User */ @Test public void tst4() { Session session = HibernateUtils.openSession(); // HQL -- Hibernate提供的面向对象的查询语句 Query query = session.createQuery("from User"); List<User> userList = query.list(); for (User user : userList) { System.out.println(user.getId() + "," + user.getName() + "," + user.getLoginName() + "," + user.getPassword()); } session.close(); }
8、测试