Hibernate持久化对象
持久化对象介绍
什么是持久化?
持久化:
摘自孙卫琴写的《精通Hibernate:Java对象持久化技术详解》:
狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;
广义的理解,“持久化”包括和数据库相关的各种操作(持久化就是将有用的数据以某种技术保存起来,将来可以再次取出来应用,数据库技术,将内存数据一文件的形式保存在永久介质中(磁盘等)都是持久化的例子.)。
持久化类(实体类)的定义
持久化类的要素:
- 拥有标识属性(id用来做数据库表的主键);
- 具有无参的构造方法;
- 属性不能使用final修饰;
- 每个属性都提供了getter、setter方法。
持久化对象的三种状态
- 瞬时态
使用new操作初始化的对象。与数据库没有任何关联行为,该对象在数据库中没有对应的记录。如果该对象一直不被引用,则该对象的状态将会丢失,并被垃圾回收机制(GC)回收。 - 持久态
对象纳入session管理,此时对象必须拥有id(通过数据库的主键生成策略生成),该对象在数据库中有对应的记录。他们的状态在事务结束时与数据库进行同步。 - 离线态
session关闭/对象被逐出(如内存空间不足,session就会将对象逐出),对象不再由session管理。此时对象处于离线态,该对象不能再与数据库进行同步,且该对象在数据库中已经有了对应的记录。
示例图:
测试实体对象的生命周期
junit简介
作用: 使普通方法能够不通过主方法自动执行。
语法:
- 测试类必须继承TestCase;
- 类名:测试类名+Test;
- 方法名:test+测试方法名;
- 测试方法中:不能有参数、不能有返回值。
**注:**高版本中能够直接使用注释@test 表明该方法能够使用junit进行测试
测试类的创建: 在目标代码的同级目录下建立测试代码,测试代码位于与目标代码同名的包中。这样做的好处是:测试代码与目标代码相互独立。
示例图:
junit的使用:
- 在代码中直接执行将直接执行所有测试方法;
- 执行单个指定的方法:在左侧的目录中执行。
persistent状态的特征
- persistent状态的对象在数据库中可能有与之匹配的数据;
- 纳入了ses