Part III. Persistence Layer

Even the most basic of taxonomic applications have a requirement for users to be able to save the information that they create. In addition, a common component of taxonomic applications is the use of a database to provide users with the ability to filter or search their data in one way or another. Some applications will require more advanced functionality, such as auditing or versioning of data. All of this logic is contained in the persistence layer, providing clean separation between data access and more taxonomy-centric business logic in the service layer.

Persistence is not a simple problem to solve, especially in application developed in Object-Oriented languages, with large amounts of data, or with many users accessing data at the same time. The CDM Library uses the Hibernate object/relational persistence and query service as the basis of its persistence layer. Several member projects of the Hibernate stable, including Hibernate Annotations, Hibernate Search and Hibernate Envers (part of Hibernate Core) provide the basis of the more advanced persistence-related functionality in the CDM Library. As a consequence some of the behaviour of the CDM Library is constrained by the underlying ORM technology. The advantage of using an ORM is that the same software can be used with multiple database systems with (almost) no changes to the application. Currently the CDM Library has been tested with (version numbers & platforms in brackets)

In theory, application developers should not need to use the persistence layer directly, but should instead use the API, which provides a facade over the persistence layer and extra business logic that most applications using the CDM will require.