接下来主要学习Hibernate持久层:
通过使用Hibernate持久层,可以避免使用传统的JDBC方式来操作数据库,通过利用Hibernate提供的O/R Mapping支持,从而允许程序使用面向对象的方式来操作关系数据库,,保证了整个软件开发过程以面向对象的方式进行,即面向分析,面向对象设计,面向对象编程。
a.设计持久化实体
面向对象分析,是指根据系统需求提取应用中的对象,将这些对象抽象成类,再抽取出需要持久化保存的类,这些需要持久化保存的类就是持久化对象(PO)。该系统并没有预先设计数据库,而是完全从面向对象开始,设计了7个持久化类。
1.Application:对应普通员工的考勤提出申请,包括申请理由,是否被批复及申请改变的类型等属性。
2.Attend:对应每天的考勤,包含考勤时间,考勤员工,是否上班及考勤类别等信息。
3.AttendType:对应考勤的类别,包含考勤的名称,如迟到,早退等名称。
4.CheckBack:对应批复,包含该批复对应的申请,是否通过申请,由那个经理完成批复等属性。
5.Employee:对应系统的员工信息,包含员工的用户名,密码,工资以及对应的经理等属性。
6.Manager:对应系统的经理信息,仅包含经理管理的部门名。实际上,Manager继承了Employee类,因此该类同样包含Employee的所有属性。
7.Payment:对应每月所发的薪水信息,包含发薪的月份,领薪的员工及薪资数等信息。
当采用贫血模式的架构模型时,系统中的领域对象十分简洁,它们都是单纯的数据类,不需要考虑到底应该包含哪些业务逻辑方法,因此开发起来非常便捷;
可观世界中的对象不是孤立存在的,以上7个PO类也不是孤立存在的。它们之间存在复杂的关联关系。分析关联关系既是面向对象分析的必要步骤,也是Hibernate进行持久化操作的必经之路。这7个PO的关联关系如下。
这7个PO之间的类关系图:
b.创建持久化实体类
从上图可以看出,持久化对象之间的关联关系以成员变量的方式表现出来,当然,这些成员变量同样需要setter和getter方法的支持,持久化类之间的关联关系通常对应数据库里的主,外键约束。
首先学习一下即将用到的一些知识,持久化要求,Hibernate采用地侵入式设计,但是应该遵循如下规则:
1.提供一个无参数的构造器,Hibernate就可以使用Constructor.newInstance()来创建持久化类的实例。
2.提供一个标识属性:标识属性通常映射数据库表的主键字段。
使用持久化注解将POJO变成PO类。
@Entity:被该注解修饰的POJO就是一个实体。
@Table:该注解指定持久化类多映射的表。
Hibernate完全可以理解面向对象的继承,多态等慨念,一旦建立了正确的继承映射,程序就能以面向对象的方式进行数据库的访问。
Hibernate的SessionFactory可持有一个可选的二级缓存,通过使用这种二级缓存可以提高Hibernate的持久化访问的性能。
下一节主要学习创建持久化实体类的代码;
学习资料:轻量级Java EE
失败是成功的亲娘,没有失败哪来的成功呢?诺贝尔如果不经历千万次的失败,