(2)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);
}
}
}
还没有评论,来说两句吧...