第一次使用Hibernate基本的增删改查 -----(笔记)

第一次使用Hibernate基本的增删改查 -----(笔记)

承接上一个博客:Hibernate的配置和使用

创建一个util工具类

public class HibernateUtil {

	public static final SessionFactory sessionFactory;
	static {
		try {
			Configuration configuration = new Configuration().configure();
			sessionFactory = configuration.buildSessionFactory();
		} catch (Throwable ex) {
			System.err.println("初始化sessionFactory失败。"+ex);
			throw new ExceptionInInitializerError(ex);
		}
	}
	public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
	public static Session currentSession() throws HibernateException {
		Session s = session.get();
		if (s == null) {
			s = sessionFactory.openSession();
			session.set(s);
		}
		return s;
	}
	public static void closeSession() throws HibernateException {
		Session s = session.get();
		if (s != null) {
			s.close();
		}
		session.set(null);
	}
}

测试类:

public class UserManager {
	
	public static void main(String[] args) throws Exception{
		UserManager um = new UserManager();
//		um.addUsers();
//		um.deleteAllUser();
//		um.updateAllUser();
//		um. findAllUser();
//		um.delete("delete from User where id = 102");
//		um.find("select name from User where id < 110");
//		um.update("update User set name = 'wlwlwl' where id = 103 ");
		User user = new User();
		user.setName("wlzs");
		user.setSex("wzbl");
		um.add(user);
		
	}
	//自定义添加(可以修改参数为list换成批量添加)
	public void add(User user) throws Exception {
		Session sess = HibernateUtil.currentSession();
		Transaction tx = sess.beginTransaction();
		sess.save(user);
		tx.commit();
		HibernateUtil.closeSession();
	}
	//自定义更新
	public void update(String updateSql) throws Exception {
		Session sess = HibernateUtil.currentSession();
		Transaction tx = sess.beginTransaction();
		Query queryupdate=sess.createQuery(updateSql);
		int ret=queryupdate.executeUpdate();
		tx.commit();
		HibernateUtil.closeSession();
	}
	//批量添加
	private void addUsers() throws Exception {
		Session sess = HibernateUtil.currentSession();
		Transaction tx = sess.beginTransaction();
		for(int i = 0;i < 100; i++){
			User u = new User();
			u.setName("W"+i);
			u.setSex("man");
			sess.save(u);
			if(i % 20 == 0){
				sess.flush();
				sess.clear();
			}
		}
		tx.commit();
		HibernateUtil.closeSession();
	}
	//批量删除
	private void deleteAllUser() throws Exception{
		Session sess = HibernateUtil.currentSession();
		Transaction tx = sess.beginTransaction();
		//删除符合条件的用户
		String deleteHql = "delete User";
		int deletedEntities = sess.createQuery(deleteHql).executeUpdate();
		tx.commit();
		HibernateUtil.closeSession();
	}
	//批量更新
	private void updateAllUser() throws Exception {
		Session sess = HibernateUtil.currentSession();;
		Transaction tx = sess.beginTransaction();

		ScrollableResults users = sess.createQuery("from User").setCacheMode(CacheMode.IGNORE).scroll(ScrollMode.FORWARD_ONLY);
		int count = 0;
		while(users.next()){
			User u = (User)users.get(0);
			u.setName("wlzs"+count);
			if(++count % 20 == 0){
				sess.flush();
				sess.clear();
			}
		}
		tx.commit();
		HibernateUtil.closeSession();
	}
	//批量查找
	private void findAllUser() {
		Configuration conf = new Configuration().configure();
		SessionFactory sessionFactory = conf.buildSessionFactory();
		Session sess = sessionFactory.openSession();
		Transaction tx = sess.beginTransaction();
		
		List list = sess.createQuery("from User").list();
		System.out.println(list.size());
		
		for (Iterator pit = list.iterator(); pit.hasNext();) {
			User user = (User)pit.next();
			System.out.println(user.getName());
		}
		tx.commit();
		HibernateUtil.closeSession();
		
	}
	//自定义删除
	private void delete(String deleteHql) throws Exception {
		Session sess = HibernateUtil.currentSession();
		Transaction tx = sess.beginTransaction();
		int deletedEntities = sess.createQuery(deleteHql).executeUpdate();
		tx.commit();
		HibernateUtil.closeSession();
	}
	//自定义查找
	private void find(String selectHql) throws Exception {
		Configuration conf = new Configuration().configure();
		SessionFactory sessionFactory = conf.buildSessionFactory();
		Session sess = sessionFactory.openSession();
		Transaction tx = sess.beginTransaction();
		List<String> list = sess.createQuery(selectHql).list();
		for (String str : list) {
			System.out.println(str);
		}
		HibernateUtil.closeSession();
	}
}

发布了14 篇原创文章 · 获赞 1 · 访问量 237

猜你喜欢

转载自blog.csdn.net/qq_41454682/article/details/105415207