# Apache MyFaces Orchestra 

> :warning: **This project is in maintaneance mode**

Orchestra is a small library based on JSF and Spring, that can be used in web applications to provide the following features:

* A conversation (aka dialog) scope for beans.
* Conversation-scope persistence contexts. This fixes the dreaded LazyInitializationException or NonUniqueObjectException problems when working with persistent objects.
* Declarative transaction annotations.
* A "dynaForm" JSF component that helps create forms for editing persistent data.

Together these features ease development of applications that perform a lot of persistence (ie are strongly coupled with a database). In particular, the dynaForm component (which requires the other parts of Orchestra) makes it easy to write the "data entry" type applications that Oracle Forms or Microsoft Access specialise in.

Orchestra currently supports JSF1.1, JSF1.2 and JSF2.0.

## Links

* [Wiki](https://cwiki.apache.org/confluence/display/MYFACES2/Orchestra/)
* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/orchestra/trunk/)
* [SVN](https://svn.apache.org/repos/asf/myfaces/orchestra/trunk/)






