package com.rlovep.extend;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
/**
*
* @ClassName: App_all
* @Description: 全都保存到一张表
* @author peace w_peace@163.com
* @date 11 Jan 2016 5:00:57 pm
*
*/
public class App_all {
private static SessionFactory sf=null;
static{
Configuration config=new Configuration().configure().addClass(Animal.class);
//创建serviceRegistry 代替buildSessionFactory()方法
ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 创建session的工厂对象
sf = config.buildSessionFactory(serviceRegistry);
}
@Test
public void testSave(){
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
//直接存储
Cat cat=new Cat();
cat.setName("黑猫");
cat.setCatchMouse("抓老鼠");
Monkey m = new Monkey();
m.setName("猴子");
m.setEatBanana("吃10个香蕉");
//保存
session.save(cat);
session.save(m);
tx.commit(); //该方法会调用flush
session.close();
}
@Test
public void testGet(){
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
//直接存储
Cat cat=null;
Monkey m = null;
//获得Animal
Animal animal = (Animal)session.get(Animal.class, 1);
System.out.println(animal.getName());
//可以向下转型为cat
if(animal instanceof Cat)
System.out.println(((Cat)animal).getCatchMouse());
//直接获得子类
Query query = session.createQuery("from com.rlovep.extend.Cat");
List<Cat> list = query.list();
System.out.println(list.get(0).getName());
//保存
session.save(cat);
session.save(m);
tx.commit(); //该方法会调用flush
session.close();
}
}