After completing the application design, your conceptual design documents should contain a pretty good model of the data objects you need. You should also have a rough idea of how these objects should be grouped into components. As you begin figuring out how to implement the objects, keep the following key design points from Chapter 7 in mind:
- Data objects are responsible for the accuracy, completeness, and consistency of the data they own.
- Data objects should work correctly whether the caller is transactional or not.
- Data objects cannot retain state across transaction boundaries. Think carefully about how your data objects will be used and how expensive data access is before you retain state across method calls.
- Data objects should be "network friendly." The fewer network round-trips required to use an object, the better.