由于这册测试使用的是JUnit,所以在开始之前,先说一下JUnit 的注意事项:
Junit简介:
* 编写类XXXXTest,需要继承TestCase
* 编写单元测试方法,测试方法必须以test开头,测试方法不能含有参数和返回值,如:
public void testHello( ) { }
* 最好单独建立source目录存放测试类
下面开始:
1.新建了一个Hibernate-Session的Java Project,还是引用上次笔记(1-1)中所创建的数据库hibernate_simple,所以像User,java,hibernate.cfg.xml,User.hbm.xml的内容都不需要改变。为了后面测试减少重复的代码,我把Hibernate稍微封装了一下,编写了一个HibernateUtils.java,源码如下(采用了一个简单的单例模式):











































2.新建了一个source-folder,名叫test,用来储存JUnit测试实例,先来一张项目的完整包图吧:
再上该folder下的SessionTest.java:(具体需要注意的问题已在注释中提到,尤其要关注HIbernate的Lazy特性以及Transient,Persistent,Detached三种状态的转换)
























































































































































































Transient对象具有的特征:
* 不处于session缓存中,不被任何一个session实例关联
* 在数据库中没有相应的记录
persistent对象具有的特征:
* 位于一个Session的缓存中,持久对象总是和一个session实例关联
* 持久对象和数据库中的记录对应
* 持久对象的变化会自动同步到数据库
detached对象具有的特征:
* 不再位于session的缓存中,不被session关联
* detached对象是由persistent对象转变过来的,因此数据库中会存在一条记录与之对应