在工程文件中创建单元测试包com.hibernate.test 在包中新建单元测试JUnit Test Case
接下来编写测试代码,其中@Before表示先执行的函数体,@Test表示测试函数体,在@Before后执行,@After表示最后执行的函数体,在@Test后执行,这里@Before主要用于编写生成session对象和transaction对象,@Test主要用于实现对数据库的CRUD(插入、更新、删除、查询)操作,@After主要用于编写善后处理,负责提交事务,关闭session对象,关闭sessionFactory对象
package com.hibernate.test;
import com.hibernate.entity.*;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class HibernateTest { //单元测试
private Session session;
private Transaction transaction;
private SessionFactory sessionFactory;
@Before
public void init(){//最开始先执行
System.out.println("before");
//加载hibernate配置文件
StandardServiceRegistry registry=new StandardServiceRegistryBuilder().configure().build();
try{
//根据配置文件初始化sessionFactory
sessionFactory=new MetadataSources(registry).buildMetadata().buildSessionFactory();
//根据sessionFactory创建session
session=sessionFactory.openSession();
//通过session对象开始事务
transaction=session.beginTransaction();
}catch(Exception e){
StandardServiceRegistryBuilder.destroy(registry);
}
}
@Test
public void test() {//在开始和最后之间执行的测试
System.out.println("test");
//初始化一个User_Info对象
//初始化一个Type对象
UserInfo user=new UserInfo("小明","555570923",new java.util.Date());
Type type=new Type("手机");
session.save(user); //保存对象到数据库中
session.save(type);
}
@Test
public void getUserInfo(){ //用get方法查询数据获取相应的对象(对象封装应有的数据)
UserInfo ui=(UserInfo)session.get(UserInfo.class, 2);
System.out.println(ui.toString());
}
@Test
public void loadUserInfo(){ //用load方法查询数据获取相应的对象(对象封装应有的数据)
UserInfo ui=(UserInfo)session.load(UserInfo.class, 2);
System.out.println(ui.toString());
}
@Test
public void deleteUserInfo(){ //删除数据
UserInfo ui=(UserInfo)session.get(UserInfo.class, 2);//获取待删除的数据对象
session.delete(ui);
}
@Test
public void updateUserInfo(){ //更新数据
UserInfo ui=(UserInfo)session.get(UserInfo.class, 7);//获取待更新的数据对象
ui.setUserName("小陈"); //更新数据对象
session.saveOrUpdate(ui); //将对象的数据更新到数据库
}
@After
public void destory(){//最后才执行
System.out.println("after");
//提交事务
transaction.commit();
//关闭session
session.close();
//关闭sessionFactory
sessionFactory.close();
}
}