这样映射实体后,执行创建以下几个实体的代码:
/** 创建EmployeeEO实体 */
EmployeeEO employee = new EmployeeEO();
employee.setName("Janet");
entityManager.persist(employee);
/** 创建RegularEmployeeEO实体 */
RegularEmployeeEO regular = new RegularEmployeeEO();
regular.setName("Nancy");
regular.setVacationDays(new Integer(10));
entityManager.persist(regular);
/** 创建ContractEmployeeEO实体 */
ContractEmployeeEO contractor = new ContractEmployeeEO();
contractor.setName("Micheal");
contractor.setCreateDate(new Date(System.currentTimeMillis()));
contractor.setExpiredDate(new Date(System.currentTimeMillis()));
entityManager.persist(contractor);
/** 创建FTEmployeeEO实体 */
FTEmployeeEO fulltime = new FTEmployeeEO();
fulltime.setName("Jane");
fulltime.setCreateDate(new Date(System.currentTimeMillis()));
fulltime.setExpiredDate(new Date(System.currentTimeMillis()));
fulltime.setMonthlySalary(new Double(5000.00));
entityManager.persist(fulltime);
/** 创建PTEmployeeEO实体 */
PTEmployeeEO parttime = new PTEmployeeEO();
parttime.setName("Leo");
parttime.setCreateDate(new Date(System.currentTimeMillis()));
parttime.setExpiredDate(new Date(System.currentTimeMillis()));
parttime.setHourlySalary(new Double(50.00));
entityManager.persist(parttime);
代码运行后,数据表中的数据如图所示。
从表数据中可以看出,由于每条记录都表示不同的实体类,这些实体类只使用有限的一些字段,而其他的一些字段可能被其他实体使用。这样就产生了许多null值的数据,当数据量增大时,大量的null浪费了数据库的空间,这也是使用这个策略所带来的弊端。