Hibernate实现CRUD

HibernateUtil:

package util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
private final static SessionFactory f=buildSessionFactory();

private static SessionFactory buildSessionFactory() {
	// TODO 自动生成的方法存根
	Configuration cfg=new Configuration().configure();
	return cfg.buildSessionFactory();
}

public static Session getSession() {
	return f.openSession();
}
public static void closeSession(Session s) {
	if(s!=null) s.close();
}
}

CRUD:

package test;



import java.util.Date;
import java.util.List;

import org.hibernate.Session;

import org.junit.jupiter.api.Test;

import model.User;
import util.HibernateUtil;

class TestCRUD {

	@Test
	void testAdd() {
		Session session=null;
		try {
			session=HibernateUtil.getSession();
			session.beginTransaction();
			User u=new User();
			u.setNickname("张三2");
			u.setBorn(new Date());
			u.setPassword("123");
			u.setUsername("zs2");
			session.save(u);
			session.getTransaction().commit();
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtil.closeSession(session);
		}
	}

	@Test
	void testLoad() {
		Session session=null;
		try {
			session=HibernateUtil.getSession();
			
			User u=(User)session.load(User.class, 2);//查询没有对数据表进行修改,所以不需要事务
			System.out.println(u.toString());
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			HibernateUtil.closeSession(session);
		}
	}
	
	@Test
	void testUpdate() {
		Session session=null;
		try {
			session=HibernateUtil.getSession();
			session.beginTransaction();
			User u=(User)session.load(User.class, 2);
			u.setNickname("张小三");
			
			session.update(u);
			session.getTransaction().commit();
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtil.closeSession(session);
		}
	}
	
	@Test
	void testDelete() {
		Session session=null;
		try {
			session=HibernateUtil.getSession();
			session.beginTransaction();
			User u=new User();
			u.setId(2);
			
			session.delete(u);//传入有id的User对象即可,其他属性不需要
			session.getTransaction().commit();
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtil.closeSession(session);
		}
	}
	
	@Test
	void testList() {
		Session session=null;
		try {
			session=HibernateUtil.getSession();
			List<User> users=session.createQuery("from User").setFirstResult(1).setMaxResults(2).list();
			for(User u:users) {
				System.out.println(u.toString());
			}
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			HibernateUtil.closeSession(session);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/HZPHYT/article/details/82874085
今日推荐