Talk about the NiCE data structure Philosophy, why we do things, the patterns, etc.
The ability to transform data to one form to another is a common requirement within many modern day programs. The NiCE program allows a majority of it's data structures to persist and load data with the hard disk. The eXtensive Markup Language (XML) handles these interactions through a process of binding the data from the data structures and converting it to a readable XML format. Java's API for XML Binding (JAXB) handles these interactions through a course of marshalling and unmarshalling of the data structures. The JAXB library is unique compared to many other forms of XML parsing because it does not require a major altering of the data structures in order for conversion process to work. With the help of annotations, the data is directly converted between XML and volatile running memory with ease. Since the XML conversion is added directly to the data structure, many other types of use cases for handling the data with the hard disk is solved fairly quickly.
NiCE handles Database Manipulation through a library called Java's Persistence API (JPA). Very similarly to JAXB, JPA handles the queries to the database through the use of operations by passing the instances of the objects themselves on a database manager (EntityManager). Only Items, which contain links to other objects, can be called upon to be manipulated with a selected database. Items can be persisted, deleted, edited, or selected for the database. There are a few quirks and requirements needed for the database to run successfully within NiCE. More information can be found in the JPA section.