204 Persistence Glossary
Domain Object
Domain objects are not part of the persistence layer, but since they are the most common way
to access a Data Object (which is part of the persistence layer), it is useful to discuss them here.
Domain objects contain logic particular to a business domain, such as managing users or credit
cards. This logic operates over a persistent data object that contains the state necessary to im-
plement the domain-specific logic. Domain objects contain the application logic specific to the
domain that requires representing persistent state. It is important to realize that Domain Objects
are not the same as Data Objects. Domain Objects and Data Objects have a many-to-many rela-
tionship with each other. See the Section 10.2 Domain Objects Tutorial for more information
See Also: Data Object.
Filter
Filters are used to allow developers to restrict the results returned by a Data Query or the
results represented in a Data Association or Data Collection.
Join Element
A Join Element is a single part of the larger Join Path. It is used to indicate how two tables can
be joined to each other. In the following example, there are 4 Join Elements that make up 2 Join
Paths. The first Join Element is in the form join foo and the second one is in the form of to
bar.
association {
Article[0..n] articles = join magazines.magazine_id
to magazine_article_map.magazine_id,
join magazine_article_map.article_id
to articles.article_id;
Magazine[0..n] magazines = join articles.article_id
to magazine_article_map.article_id,
join magazine_article_map.magazine_id
to magazines.magazine_id;
}
See Also: Join Path.
Join Path
A Join Path is the collection of Join Elements seperated by commas and indicate how to join
tables to each other. They are typically used within associations to indicate how the objects
within the database are related.
In the following example of an association between Articles and Magazines, there are two Join
Paths; the first one is in bold and the second is in italics.
association {
Article[0..n] articles = join magazines.magazine_id
to magazine_article_map.magazine_id,
join magazine_article_map.article_id
to articles.article_id;
Magazine[0..n] magazines = join articles.article_id
to magazine_article_map.article_id,
join magazine_article_map.magazine_id
to magazines.magazine_id;
}