}
public void setDate(Date date) {
this.date = date;
}
}
hibernate.cfg.xml 清单
Junit Test
package junit.test;
import java.util.Date;
import net.yeah.fancydeepin.unidirectional.po.Student;
import net.yeah.fancydeepin.unidirectional.po.StudentCard;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestApp {
private static Session session;
private static final String ID = "402881f13a5480c2013a5480c3d00001";
@BeforeClass
public static void beforeClass(){
session = new AnnotationConfiguration().configure().buildSessionFactory().getCurrentSession();
}
@Test
public void createTable(){
new SchemaExport(new AnnotationConfiguration().configure()).create(true, true);
}
@Test
public void insert(){
Student student = new Student();
student.setName("fancy");
StudentCard studentCard = new StudentCard();
studentCard.setId(3110005981L);
studentCard.setDate(new Date());
student.setStudentCard(studentCard);
session.beginTransaction();
session.save(student);
session.getTransaction().commit();
}
@Test
public void query(){
session.beginTransaction();
Student student = (Student)session.get(Student.class, ID);
System.out.println(student.getName());
//StudentCard studentCard = student.getStudentCard();
//System.out.println(studentCard.getDate());
}
@Test
public void update(){
session.beginTransaction();
Student student = (Student)session.get(Student.class, ID);
student.setName("fancydeepin");
// StudentCard studentCard = student.getStudentCard();
// studentCard.setDate(new Date());
// student.setStudentCard(studentCard);
session.update(student);
session.getTransaction().commit();
}
@Test
public void delete(){
session.beginTransaction();
Student student = (Student)session.get(Student.class, ID);
// StudentCard studentCard = student.getStudentCard();
// session.delete(studentCard);
session.delete(student);
session.getTransaction().commit();
}
}
1. 建表
在 Junit 测试类中执行建表方法 createTable,数据库中生成表结构 :


2. 插入数据 ( 级联插入 )
在 Junit 测试类中执行 insert 方法,后台发出两条插入的 SQL 语句,数据库中产生的数据 :


在这里,student 是主表,studentcard 是从表,Student 类级联 ( CascadeType.ALL ) 了 StudentCard 类,当 Student 的实例对象被持久化时,
若 Student 对象的 StudentCard 实例对象不为 null,则该 StudentCard 对象也将被持久化到数据库,若为 null,则不会被持久化。
3. 查询数据 ( 延迟加载 )
在 Junit 测试类中执行 query 方法,后台发出 Student 的 select SQL 语句 :
Hibernate:
select
student0_.id as id0_0_,
student0_.name as name0_0_,
student0_.studentCard_id as studentC3_0_0_
from
Student student0_
where
stude