maintenance issues. Persistence Hibernate provides transparent persistence for Plain Old Java Objects (POJOs). The only strict requirement for a persistent class is a no-argument constructor, though not necessarily . Proper behavior in some applications also requires special attention to the and methods in the object classes. Hibernate recommends providing an identifier attribute, and this is planned to be a mandatory requirement in a future release. Collections of data objects are typically stored in Java collection classes, such as implementations of the and interfaces. Java generics, introduced in Java 5, are also supported. Hibernate can be configured to lazy load associated collections. Lazy loading is the default as of Hibernate 3. Related objects can be configured to cascade operations from one object to the other. For example, a parent class object can be configured to cascade its and operations to its child class objects. Integration Hibernate can be used both in standalone Java applications and in Java EE applications using servlets, EJB session beans, and JBI service components. It can also be included as a feature in other programming languages. For example, Adobe integrated Hibernate into version 9 of ColdFusion (which runs on J2EE app servers) with an abstraction layer of new functions and syntax added into CFML. Entities and components In Hibernate jargon, an entity is a stand-alone object in Hibernate's persistent mechanism which can be manipulated independently of other objects. In contrast, a component is subordinate to an entity and can be manipulated only with respect to that entity. For example, an Album object may represent an entity; but the Tracks object associated with the Album objects would represent a component of the Album entity, if it is assumed that Tracks can only be saved or retrieved from the database through the Album object. Unlike J2EE, Hibernate can switch databases. History Hibernate was started in 2001 by Gavin King with colleagues from Cirrus Technologies as an alternative to using EJB2-style entity beans. The original goal was to offer better persistence capabilities than those offered by EJB2; by simplifying the complexities and supplementing certain missing features. In early 2003, the Hibernate development team began Hibernate2 releases, which offered many significant improvements over the first release. JBoss, Inc. (now part of Red Hat) later hired the lead Hibernate developers in order to further its development. In 2005, Hibernate version 3.0 was released. Key features included a new Interceptor/Callback architecture, user defined