面向 Java 开发人员的 db4o 指南: 超越简单对象
2010-04-01 00:00:00 来源:WEB开发网一段时间以来,在 面向 Java 开发人员的 db4o 指南 中,我查看了各种使用 db4o 存储 Java 对象的方法,这些方法都不依赖映射文件。使用原生对象数据库的其中一个优点就是可以避免对象关系映射(也许这不是重点),但我曾用于阐述这种优点的对象模型过于简单,绝大多数企业系统要求创建并操作相当复杂的对象,也称为结构化对象,因此本文将讨论结构化对象的创建。
结构化对象 基本上可以看成是一个引用其他对象的对象。尽管 db4o 允许对结构化对象执行所有常用的 CRUD 操作,但是用户却必须承受一定的复杂性。本文将探究一些主要的复杂情况(比如无限递归、层叠行为和引用一致性),以后的文章还将深入探讨更加高级的结构化对象处理问题。作为补充,我还将介绍探察测试(exploration test):一种少为人知的可测试类库及 db4o API 的测试技术。
从简单到结构化
清单 1 重述了我在介绍 db4o 时一直使用的一个简单类 Person:
清单 1. Person
package com.tedneward.model;
public class Person
{
public Person()
{ }
public Person(String firstName, String lastName, int age, Mood mood)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.mood = mood;
}
public String getFirstName() { return firstName; }
public void setFirstName(String value) { firstName = value; }
public String getLastName() { return lastName; }
public void setLastName(String value) { lastName = value; }
public int getAge() { return age; }
public void setAge(int value) { age = value; }
public Mood getMood() { return mood; }
public void setMood(Mood value) { mood = value; }
public String toString()
{
return
"[Person: " +
"firstName = " + firstName + " " +
"lastName = " + lastName + " " +
"age = " + age + " " +
"mood = " + mood +
"]";
}
public boolean equals(Object rhs)
{
if (rhs == this)
return true;
if (!(rhs instanceof Person))
return false;
Person other = (Person)rhs;
return (this.firstName.equals(other.firstName) &&
this.lastName.equals(other.lastName) &&
this.age == other.age);
}
private String firstName;
private String lastName;
private int age;
private Mood mood;
}
更多精彩
赞助商链接