Hibernate 继承关系 对象关系映射--joined-subclass ,测试 crud

来源:互联网 发布:哇嘎连接不到网络 编辑:程序博客网 时间:2024/05/24 05:30





package com.baidu.jionSubclass;import java.util.List;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.After;import org.junit.Before;import org.junit.Test;public class TestJionSubclassPerson {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void init(){Configuration configuration = new Configuration().configure();ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();sessionFactory = configuration.buildSessionFactory(serviceRegistry);session = sessionFactory.openSession();transaction = session.beginTransaction();}@Afterpublic void destroy(){transaction.commit();session.close();sessionFactory.close();}/** * 查询: * 1. 查询父类记录,需要做一个左外连接查询 * 2. 对于子类记录,需要做一个内连接查询 *  *jionSubclass 优点: * 1. 不需要使用辨别者列 *  2. 子类特有的字段可以使用非空约束 *  3. 没有冗余的字段 *  */@Testpublic void testGet() {List<Person> persons = session.createQuery("FROM Person").list();System.out.println(persons.size());List<Student> students = session.createQuery("FROM Student").list();System.out.println(students.size());}/** * 插入操作: * 1. 对于子类对象至少需要把记录插入到 两张 数据表中 */@Testpublic void testSave() {Person person = new Person();person.setAge(15);person.setName("Person-CC");Student student = new Student();student.setAge(10);student.setName("Student-CC");student.setSchool("Student_school2");session.save(person);session.save(student);}}


0 0