bject os)
makePersistentAll(Collection os) deletePersistentAll(Collection os) makeTransientAll(Collection os)
(这里是一个4X3的表格,可以参阅原稿中的英文表格)
第三步:显示数据库中人的信息
显示信息代码以获得可保持性管理器开始。我们使用上面代码中用persistPeople()方法保存的对象ID获得对象,调用对象的方法━━在本例中是gets,来得到我们输入的信息。我们可以发现,要保持我们的对象,并不需要编写大量的代码。
public void display(int end) {
Person person;
int max = end <= SIZE ? end : SIZE;
// 获得一个新的可保持性管理器
pm = pmf.getPersistenceManager();
// 从数据库中获取对象并进行显示
for(int i = 0; i < max; i++) {
person = (Person) pm.getObjectById(id.elementAt(i),
false);
System.out.println("Name : " + person.getName());
System.out.println("Address : " +
person.getAddress());
System.out.println("SSN : " + person.getSsn());
System.out.println("Email : " + person.getEmail());
System.out.println("Home Phone: " +
person.getHomePhone());
System.out.println("Work Phone: " +
person.getWorkPhone());
}
pm.close();
}
第四步:改变其中一个人的名字
改变存储在数据库中的一个人的信息的代码也十分简单,它与显示数据库中人的信息的代码非常类似。在这里,我们需要创建一个事务(因为要修改其中的记录),使用定义的setName()方法修改一个人的名字,最终提交该事务,保存所作的修改。这种操作与处理临时对象之间真正的差别是,我们考虑是事务。
public void change() {
Person person;
// 从数据存储库中获取对象
pm = pmf.getPersistenceManager();
transaction = pm.currentTransaction();
// 修改第二个保持记录的DataString字段
person = (Person) pm.getObjectById(id.elementAt(1),
false);
person.setName("Steve Gerrard");
// 提交事务并关闭可保持性管理器
transaction.commit();
pm.close();
}
第五步:删除一个人的
资料 你自己能够想象出从数据库中删除第二个人
资料的代码吗?因为我们已经了解了所有编写这一代码所需要的知识。仔细地研究一下下面的代码就会发现,我们使用了第二步中的可保持性管理器方法中提到的deletePersistent()方法。
public void delete() {
// 从数据库中获取对象
pm = pmf.getPersistenceManager();
transaction = pm.currentTransaction();
// 从数据库中删除第二个人的信息,并从ID向量中删除其ID
pm.deletePersistent(pm.getObjectById(id.remove(1),
false));
// 提交事务并关闭可保持性管理器
transaction.commit();
pm.close();
}
第六步:在main()方法中运行上面的代码
最后,整个代码需要有一个main()串起来,在数据库中输入人的信息、改变其中一个人的名字,然后删除该人的资料。如果运行这一程序,就会看到
程序运行到每一步时的地址簿。
public static void main(String args) {
System.out.println("Create PersonPersist");
PersonPersist personPersist = new PersonPersist();
System.out.println("Setup and persist a group of people");
personPersist.persistPeople();
System.out.println("Display the persisted people");
personPersist.display(SIZE);
System.out.println("Change a name ");
personPersist.change();
personPersist.display(SIZE);
System.out.println("Delete a person ");
personPersist.delete();
personPersist.display(SIZE - 1);
}
JD