package Test;
import java.util.List;
import java.util.Set;
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.tedu.entity.Book;
import com.tedu.entity.Student;
import com.tedu.entity.Teacher;
import com.tedu.entity.User;
public class TestCase {
private SessionFactory sf ;
//测试将临时状态数据保存并转为持久状态数据
@Test
public void Test1(){
createSF();
Session session = sf.openSession();
Student s = new Student("刘维丰","16");
s.setName("刘磊");
//开启事务
Transaction t = session.beginTransaction();
System.out.println(s);
t.begin();
session.save(s);
System.out.println(s);
t.commit();
session.close();
}
//测试将临时状态数据保存并转为持久状态数据
@Test
public void Test2(){
createSF();
Session session = sf.openSession();
Teacher t = new Teacher("薛兆丰");
Transaction transaction = session.beginTransaction();
System.out.println(t);
transaction.begin();
session.save(t);
transaction.commit();
System.out.println(t);
session.close();
}
//测试将持久状态数据进行修改
@Test
public void Test3(){
createSF();
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
Student s = (Student) session.get(Student.class, 1);
System.out.println(s);
s.setName("Bill");
System.out.println(s);
transaction.commit();
session.close();
}
//测试将持久状态数据转为游离状态数据再转为持久状态并且修改
@Test
public void Test4(){
createSF();
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
Student s = (Student) session.get(Student.class, 1);
System.out.println(s);
//将session转换为游离状态
session.evict(s);
//解除游离状态
session.update(s);
s.setName("Bill");
System.out.println(s);
transaction.commit();
session.close();
}
//测试将持久状态数据转为游离状态数据再转为临时状态
@Test
public void Test5(){
createSF();
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
Student s = (Student) session.get(Student.class, 3);
System.out.println(s);
//将session转换为游离状态
session.evict(s);
//直接将数据转为临时状态(即删除)
session.delete(s);
s.setName("Bill");
System.out.println(s);
transaction.commit();
session.close();
}
//测试HQL数据
@Test
public void Test6(){
createSF();
Session session = sf.openSession();
String HQL = "from Student where name like '%刘%'";
Query query = session.createQuery(HQL);
//用query对象查找数据
List<Student> list = query.list();
for(Student s : list){
System.out.println(s);
}
session.close();
}
//测试多对一和一对多的关系以及懒加载
@Test
public void TestOneToMany(){
createSF();
Session session = sf.openSession();
User user = (User) session.get(User.class, 1);
System.out.println(user.getId());
System.out.println(user.getName());
Set<Book> book = user.getBook();
System.out.println(book.size());
for (Book b : book){
System.out.println(b);
}
session.close();
}
//创建SessionFactory对象
public void createSF(){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
sf = config.buildSessionFactory();
}
}