全局会话类的设计
com.mr.clock.session 包下的 Session.java 为全局会话类,该类可以为系统中频繁使用的数据提供缓存机制。让程序从内存中读取数据,而不是频繁地访问数据库,这样可以极大地提高软件性能。
Session 类使用 HashSet(哈希集合)或 HashMap(哈希键值对)作为数据容器。被缓存的数据如下。
-
当前登录的管理员:静态属性 user 用于保存已登录的管理员对象,该属性的类型为 User 管理员实体类。如果 user 为 null,则表示还没有管理员登录。
-
当前使用的作息时间:静态属性 worktime 用于保存当前考勤报表所采用的作息时间,该属性的类型为 WorkTime 作息时间实体类。
-
全体员工:静态属性 EMP_SET 用于保存所有员工对象,该属性的类型为 HashSet<Employee>。
-
全体人脸特征:通过静态属性 FACE_FEATURE_MAP 用于保存人脸特征库,该属性的类型为 HashMap<String, FaceFeature>,其中键为某员工的特征码,值为该员工的人脸特征对象。
-
全体人脸图像:静态属性 IMAGE_MAP 用于保存所有员工的人脸照片图像,该属性的类型为 HashMap<String, BufferedImage>,其中键为某员工的特征码,值为该员工的人脸照片图像。
-
全部打卡记录:静态属性 RECORD_MAP 用于保存所有员工的人脸照片图像,该属性的类型为 HashMap<Integer, Set<Date>>,其中键为某员工的编号,值为该员工的打卡日期集合。
Session 类除缓存这些数据外,还提供了加载资源的 init() 方法和释放资源的 dispose() 方法。项目启动时会自动执行 init() 方法来加载所有资源,在用户确认关闭程序后会执行 dispose() 方法释放所有资源。Session 类的具体代码如下:
public class Session {
}