首先准备HibernateUtils
package com.tarena.demo.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static Configuration cfg; private static SessionFactory factory; static{ cfg = new Configuration().configure(); factory = cfg.buildSessionFactory(); } public static Session getSession(){ return factory.openSession(); } public static void close(Session session){ if(session!=null&&session.isOpen()){ session.close(); } } }
TestCRUD测试类
package com.tarena.test; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.tarena.demo.po.User; import com.tarena.demo.utils.HibernateUtils; public class TestCRUD { /** * 保存记录 */ @Test public void testSave(){ User user = new User(); user.setUserName("诸葛亮"); user.setUserPassword("123456"); Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction tr = session.beginTransaction(); session.save(user); tr.commit(); session.close(); } /** * 执行删除 * 对应该对象的记录一定存在,如果不存在 * hibernate 会抛出异常 */ @Test public void testDelete(){ User user = new User(); user.setUid(1); Session session = HibernateUtils.getSession(); session.delete(user); session.beginTransaction().commit(); HibernateUtils.close(session); } /** * 更新记录 */ @Test public void testUpdate(){ User user = new User(); user.setUid(2); user.setUserName("诸葛亮"); user.setUserPassword("333333"); Session session = HibernateUtils.getSession(); session.update(user); session.beginTransaction().commit(); HibernateUtils.close(session); } /** * 查询记录 * 一条记录,通过id查询 * get()方法 * 不使用懒加载机制 * 当记录不存在,get方法返回null */ @Test public void testGet(){ Session session = HibernateUtils.getSession(); User user = (User)session.get(User.class, 2); System.out.println("-------------------------"); //System.out.println(user); System.out.println(user.getUserName()); System.out.println(user.getUserPassword()); HibernateUtils.close(session); } /** * 查询记录 * 一条记录,通过id查询 * load()方法 * * 懒加载:查询对象,当使用该对象才到数据库中执行查询的动作 * 如果不使用该对象,不会到数据库中查,会临时使用第三方的代理 * 技术,返回一个代理对象 * * 使用懒加载(延迟加载)机制 * 如果记录不存在会抛出如下异常 * org.hibernate.ObjectNotFoundException: * No row with the given identifier exists: * [com.tarena.demo.po.User#3] * */ @Test public void testLoad(){ Session session = HibernateUtils.getSession(); User user = (User)session.load(User.class, 2); System.out.println("-------------------------"); System.out.println(user.getUserName()); System.out.println(user.getUserPassword()); HibernateUtils.close(session); } /** * 查询多条记录 * 使用hql语句 * hql:Hibernate Query Language * 完全面向对象 */ @Test public void testQuery(){ Session session = HibernateUtils.getSession(); String hql = "select u from User u"; Query query = session.createQuery(hql); List<User> users = query.list(); for(User user:users){ System.out.println(user.getUserName()); } HibernateUtils.close(session); } }
Hibernate:
select
user0_.uid as uid0_0_,
user0_.userName as userName0_0_,
user0_.userPassword as userPass3_0_0_
from
t_user user0_
where
user0_.uid=?
-------------------------
诸葛亮
333333
-------------------------
Hibernate:
select
user0_.uid as uid0_0_,
user0_.userName as userName0_0_,
user0_.userPassword as userPass3_0_0_
from
t_user user0_
where
user0_.uid=?
诸葛亮
333333
@Test public void testGet(){ Session session = HibernateUtils.getSession(); User user = (User)session.get(User.class, 2); System.out.println("-------------------------"); System.out.println(user.getClass().getName()); //System.out.println(user.getUserName()); //System.out.println(user.getUserPassword()); HibernateUtils.close(session); }