Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 87178 invoked from network); 8 Jul 2007 19:13:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Jul 2007 19:13:22 -0000 Received: (qmail 76469 invoked by uid 500); 8 Jul 2007 19:13:24 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 76450 invoked by uid 500); 8 Jul 2007 19:13:24 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 76441 invoked by uid 99); 8 Jul 2007 19:13:24 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 08 Jul 2007 12:13:24 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 08 Jul 2007 12:13:19 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 9F9CE1A9877; Sun, 8 Jul 2007 12:12:06 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r554413 [16/17] - in /cayenne/main/trunk/docs/doc/src/main/resources/doc: ./ Documentation/ Documentation/Cayenne Guide/ Documentation/Cayenne Guide/Ant Tasks/ Documentation/Cayenne Guide/Ant Tasks/cdataport/ Documentation/Cayenne Guide/Ant... Date: Sun, 08 Jul 2007 19:11:53 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070708191206.9F9CE1A9877@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/cayenne-project-1_1.dtd URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%201.1%20Features/cayenne-project-1_1.dtd?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/cayenne-project-1_1.dtd (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/cayenne-project-1_1.dtd Sun Jul 8 12:11:31 2007 @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%201.1%20Features/index.html?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/index.html (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/index.html Sun Jul 8 12:11:31 2007 @@ -0,0 +1,188 @@ + + + + Apache Cayenne Documentation - Guide to 1.1 Features + + + +
+
+ Cayenne User Documentation
+ Guide to 1.1 Features +
+ +

Cayenne version 1.1 introduces a large number of new features and enhancements over 1.0. This chapter lists most of them, providing the links to more detailed information about each feature.

+ +

DTD Additions.

+ +

"cayenne.xml" and "*.map.xml" file formats were updated to support new features. 1.1 DTD files are located here:

+ + + +
Upgrade Warning
Saving projects with CayenneModeler v.1.1 will render them uneditable with CayenneModeler v.1.0.
+ +

Advanced Local and Distributed Caching

+ +

Cayenne now provides a way to share its object cache between DataContexts in the same JVM and across JVMs. The following chapters in the user guide describe this feature:

+ + + +

Optimistic Locking

+ +

ObjAttributes and ObjRelationships can be marked to be used for "optimistic" locking. If an corresponding columns of the underlying database row are externally modified, an attempt to save an object results in OptimisticLockingException.

+ +

DataObjectUtils - an easy way to map objects by PK

+ +

DataObjectUtils is an often requested feature for easy retrieval of an object primary key, or locating an object for a known key. It works in a generic way for any type of DataObjects, even if a PK is not a class property.

+ +

Entity Inheritance

+ +

Cayenne now supports entity inheritance for entities rooted in the same DB table (single table inheritance).

+ +

Data Views and DVModeler

+ +

DataViews is a completely new addition to Cayenne. This is a framework and a Swing modeler tool to quickly build Swing applications based on Cayenne.

+ +

Generic Multithreaded and Distributed Events Mechanism

+ +

Cayenne now includes a generic event package "org.objectstyle.cayenne.event" for registering listeners and sending events, both locally and remotely. It supports both blocking and non-blocking listeners and dispatches. Supported remote transports include JMS and JavaGroups.

+ +

DataObjects Validation

+ +

DataContext now performs validation of DataObjects before committing them. There is a set of default validation checks being executed, based on the DataMap information. Developers can override DataObject validation methods to provide custom validation checks.

+ +

See user guide chapter on object validation.

+ +

Expression API Enhancements

+ +

There is a new expression parser that allows creation of complex expressions from strings ("Expression.fromString(..)"). This greatly reduces the amount of code needed to build an expression.

+ +

In-memory evaluation API is improved, and now supports both boolean conditions (via "Expression.match" method) and generic expressions evaluation (via "Expression.evaluate" method), it also includes support for arithmetic operations.

+ + + +

SQLTemplate - A Dynamic Raw SQL Query

+ +

SQLTemplate replaces SqlSelectQuery and SqlModifyQuery and is a scriptable parameterized raw SQL query. It supports DataObjects and other features declared in GenericSelectQuery interface.

+ + + +

DataContext API for Running Parameterized Named Queries

+ +

DataContext now provides simple API to run SelectQuery, SQLTemplate and ProcedureQuery by name if such queries are mapped via CayenneModeler:

+ + + +

Support for Shared Mapping Namespace

+ +

DataDomain now provides a shared mapping namespace. This means that all mapping objects can reference other mapping objects outside their DataMaps. For example two DbEntities can be located in different DataMaps and still have relationships to each other.

+ +

Temporary limitation of the shared mapping namespace is that Queries stored in the DataMap can't have a "root" from a different DataMap.

+ +

SnapshotEvents

+ + +

DataContextDelegate

+ + +

Entity Restricting Qualifier

+ +

ObjEntities now can hold a qualifier expression that is automatically appended to any query qualifiers, thus creating a global data filter for a given entity. This feature is used for inheritance mapping, however it has nothing to do with inheritance as such and can be used all by itself.

+ +

Explicit Transaction API and Container Managed Transactions

+ +

Cayenne now supports container-managed transactions. As a result it can be used inside EJBs out of the box. It also allows a high degree of transactions customization. The following user guide chapter explains Transactions design and behavior in details:

+ + + +

Various Performance Enhancements

+ +
    +
  • Lazy Relationship Creation - when new objects are fetched, their relationships are not initialized immediately; a Fault singleton is used isntead as a placeholder. Of course in the past Cayenne also had "lazy" relationships, meaning that they didn't get resolved via a DB query until accessed. Current optimization goes further - it prevents a number of Java objects (such as empty Lists for to-many relationship, or "hollow" DataObjects for to-ones) from being created until absolutely necessary.
  • +
  • To-many relationships do not have to be fully resolved on modification - if an unresolved to-many relationship is modified (i.e. an object is added or removed from it), it is not resolved until the next "read" (i.e. until a call to "size()" or "iterator()" method). This is especially helpful with bi-directional one-to-many relationships. E.g. "painting.addToArtist(artist)" used to trigger the fetch of all paintings that belong to an artist. Not anymore.
  • +
+ + +

More Databases Have Custom DbAdapters

+ +

Cayenne features new database adapters:

+
    +
  • OpenBase Adapter
  • +
  • MS SQL Server Adapter
  • +
+ + +

Support for To-One Relationships Not Pointing to a PK.

+ +

Added support for one-to-one relationships between PK and non-PK columns of related tables. In the past this could only be modeled as one-to-many. CayenneModeler will create UNIQUE constraint for a non-PK columns during schema generation.

+ +

Support for Queries in DataMap DTD.

+ +

Queries are made first-class mapping objects. They can be modeled in CayenneModeler and stored in DataMaps. Application code can then reuse such queries.

+ + + +

Non-refreshing Select Queries

+ + +

CayenneModeler Enhancements.

+ +

The following is an incomplete list of enhancements: new professional look and feel, preference engine, reenginnering of stored procedures, local DataSources, configurable locations of JDBC drivers, custom class generation templates, etc. A number of Modeler tasks and dialogs have been redesigned and improved to be more user-friendly and consistent.

+ +

Also CayenneModeler supports mapping of all the new 1.1 framework features, such as DataMap queries, cache synchronization configuration, etc.

+ +
.
+
+ + + + + Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.1 Features/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.2 Features/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%201.2%20Features/index.html?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.2 Features/index.html (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.2 Features/index.html Sun Jul 8 12:11:31 2007 @@ -0,0 +1,204 @@ + + + + Apache Cayenne Documentation - Guide to 1.2 Features + + + +
+
+ Cayenne User Documentation
+ Guide to 1.2 Features +
+ +
+

This page describes new features and other changes introduced in 1.2 release.

+ +

Core Framework

+ +

Remote Object Persistence

+ +

Cayenne Remote Object Persistence is a low-overhead web services-based technology that provides lightweight generic object persistence and data query functionality to 'remote' applications. It allows to use the same object model and the same context capabilities in a system with more than one Java tier. Now persistence features can be implemented consistently across a set of collaborating applications with different responsibilities and security context.

+ + +

ObjectContext API

+ +

ObjectContext is a new interface that is a generalization of the traditional DataContext. In fact DataContext is one of its main implementors. Another implementation is CayenneContext used on remote clients.

+ +

Query Enhancements

+ +
    +
  • Prefetching +
      +
    • Cayenne now supports prefetching of flattened relationships.
    • +
    • New "joint" prefetch semantics is introduced.
    • +
    • Semantics of prefetching now can be customized by users via PrefetchTreeNode API.
    • +
    • SQLTemplate and ProcedureQuery can be configured to emulate joint prefetching behavior.
    • +
    +
  • +
+ + +
    +
  • Customizing Queries: In 1.2 Queries can have behavior in addition to storing query parameters. Now queries can route themselves and also handle their own execution at the JDBC level. This opens endless possibilities for custom extensions.
  • +
+ + + + + + + + +

Generated Columns

+ +

Cayenne now supports auto-increment/identity columns as an alternative mechanism for primary key generation.

+ +

DTD Changes

+ +

...

+ +

JDK 1.5 Features Support

+ +
    +
  • Mapping Properties as Enums. Numeric or character database columns can now be mapped as custom Enums. Cayenne supports this out of the box without any special configuration. Assumption is made that character columns store the name of a given Enum object, while numeric columns store a position of a given Enum object in the Enum class.
  • +
+ + +

Generic Persistent Class

+ +

Cayenne allows CayenneDataObject (or its subclass) to be used as a generic persistent object, skipping class generation and compilation steps. Use only when appropriate!

+ +

WebApplicationContextFilter

+ +

A Servlet Specification 2.3 compatible way to bind DataContext to the request thread. See chapter 12.2.4 of the new User Guide shipped with 1.2 milestones for details.

+ +

DBCPDataSourceFactory: DBCP Pool Support

+ +

A connection pool from jakarta-commons DBCP project is now supported via the modeler - just select DBCPDataSourceFactory from the DataSource factories dropdown. The new factory loads its configuration from a specified properties file (see DBCPDataSourcefactory Javadocs for supported properties). DBCP connection pool is much more advanced than the one provided by Cayenne and supports a dozen or so runtime parameters. See Javadocs for org.objectsyle.cayenne.conf.DBCPDataSourceFactory for details.

+ +

Database Adapter Improvements/New Adapters

+ +
    +
  • New adapter for Cloudscape/Derby
  • +
  • New adapter for FrontBase
  • +
  • New adapter for Ingres
  • +
  • MySQL adapter is improved to support referential integrity constraints for InnoDB tables.
  • +
  • Adapter Auto Detection. Users no longer need to specify DbAdapter in the Modeler. All standard adapters are "guessed" by Cayenne in runtime using database metadata. Only custom adapters need to be set explicitly, using the new "Adapter" tab in the DataNode Editor panel. This simplifies configuration, makes deployment more transparent, and allows Cayenne to dynamically tweak adapter settings depending on the underlying database version and runtime parameters.
  • +
  • Extended type mechanism now allows mapping a persistent property as an interface. This can be achieved via ExtendedTypeFactory API. A custom ExtendedTypeFactory is registered in a manner similar to ExtendedType with adapter's ExtendedTypeMap: extendedTypeMap.addFactory(myFactory). Cayenne already takes advantage of this API by providing a factory that handles an arbitrary JDK 1.5 Enum via reflection.
  • +
+ + + +

DataContext Improvements

+ +
    +
  • User Properties Map. DataContext now maintains an internal map of user-defined values. This allows users to associate certain data with a given DataContext.
  • +
+ + +
    +
  • DataContextFactory. DataContext allows to register an optional factory class (via the Modeler or in the API) that will be used to create DataContexts. This way users can implement DataContext subclasses that will seamlessly integrate in the existing Cayenne stack.
  • +
+ + + + + +

XML Serialization

+ +

A new package org.objectstyle.cayenne.xml provides a way to encode arbitrary Java objects to XML and decode them from XML. It allows a great degree of control over the XML structure, thus simplifying integration with third party XML message systems. M5 features the first usable release of this feature. However there may be more changes in the course of 1.2.

+ +

Need to document this better, for now see Javadocs for org.objectstyle.cayenne.xml.XMLEncoder and org.objectstyle.cayenne.xml.XMLDecoder.

+ +

Loading JNDI DataNodes from Local Preferences

+ +

If a DataNode is configured to use JNDIDataSourceFactory, you can setup a "Local DataSource" via Modeler preferences with the name matching the JNDI name. After that when you run your application locally without a JNDI container, Cayenne would use local preferences database.

+ +

WebObjects Integration

+ +

EOModel importer now correctly imports EOFetchSpecification qualifiers, prefetches and a number of other previously ignored parameters.

+ +

Tools: CayenneModeler, Ant Tools

+ +

General UI Rework

+ +

CayenneModeler is significantly more user friendly compared to 1.1.

+ +
    +
  • Modeler is packaged as a native application for Windows and Mac OS X.
  • +
  • Entity editors have their own "local" toolbars for working with attributes and relationships instead of trying to locate a needed button in the common top toolbar.
  • +
  • There are two history navigation buttons allowing to quickly return back to the places that you've recently visited.
  • +
  • There are new PK generator options at the DbEntity level.
  • +
  • A class generator dialog is completely redesigned to provide a number of advanced options and better general usability.
  • +
  • A number of visual bug fixes, new icons, etc.
  • +
  • A number of performance enhancements.
  • +
+ + + +

Ant Task Improvements

+ +
    +
  • Antlib descriptor for Cayenne Ant Tasks
  • +
  • Vastly extended and improved cgen. See cgen task documetation in the user guide shipped with release for more details. Note that cgen maybe split in two tasks to make it simpler.
  • +
  • New cdbgen task
  • +
  • New cdataport database data porting task. (moved from examples with improvements)
  • +
+ + +

Code Generation Improvements

+ +
    +
  • Customizable Encoding Of Generated Files. Desired encoding for generated Java files can be specified in the Modeler in Preferences and as an "encoding" attribute of the cgen Ant task. This is helpful in cross-platform development situations.
  • +
+
+ +
.
+
+ + + + + Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 1.2 Features/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide%20to%203.0%20Features/index.html?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html Sun Jul 8 12:11:31 2007 @@ -0,0 +1,192 @@ + + + + Apache Cayenne Documentation - Guide to 3.0 Features + + + +
+
+ Cayenne User Documentation
+ Guide to 3.0 Features +
+ +

This page summarizes the new features and changes introduced in 3.0 release, roughly corresponding to the latest released milestone. Consult RELEASE-NOTES.txt file bundled with each release for the full list of changes, fixes and improvements.

+ +

Distribution Contents Structure

+ +
    +
  • There are a few changes in the contents of the distribution "lib" folder. For details see this page. Main Cayenne JAR is now called "cayenne-server-x.x.x.jar". We no longer ship the "fat" jar with dependencies. Instead dependencies are included in the separate jars in "lib/third-party" distribution folder.
  • +
  • CayenneModeler is located in the "bin" folder. Never mind the "lib/cayenne-modeler-x.x.x.jar" - this is just an underlying Modeler library, used in "local JNDI" configuration for instance, not the runnable application.
  • +
+ + +

Cayenne JPA Provider

+

(status: preview)

+ +

Cayenne 3.0 includes an in-progress partial implementation of a Java Persistence API specification compliant persistence provider, with support for POJO and JPA annotations. Provider can be used in a standalone mode, as well as a part of a J2EE container.

+ +

Currently implemented features:

+ +
    +
  • Provider, EntityManagerFactory, EntityManager API bridge to the current Cayenne stack
  • +
  • Loading mapping from annotations
  • +
  • Loading mapping from XML
  • +
  • Class enhancement
  • +
  • Basic selecting EJBQL
  • +
  • Entity callbacks
  • +
+ + + + + + +

Cayenne Persistence API

+ +

Many of the improvements below were done to support the JPA provider, still Cayenne applications can take advantage from all of these things without using JPA.

+ +

ObjectContext

+ +

While you can still use DataContext directly, we encourage you to avoid direct dependency on DataContext throughout your code, and instead use org.apache.cayenne.ObjectContext interface. E.g.:

+ +
+
ObjectContext context = DataContext.createDataContext();
+
+ +

This protects your code from the actual implementation evolution, allows you to customize context behavior by using interface wrappers, and would also allow you to use lifecycle callbacks feature (although we may enable callbacks directly on the DataContext at some point). There are plans to update all Cayenne API to return ObjectContext everywhere DataContext might be returned.

+ +

EJB QL Queries

+

(status: in progress, only selecting queries are supported)

+ +

Never mind the "EJB" in the name. EJBQL queries are a powerful object query mechanism borrowed from the JPA specification and added to Cayenne API. EJBQLQuery is a first-class citizen, just like SelectQuery.

+ +

Entity Lifecycle Callbacks

+ +

Just like EJBQL, lifecycle callbacks is a JPA-inspired feature that allows to perform custom operations at certain points in the object lifecycle. For more details see this page.

+ +

Cache Management

+ + + + +

Expression Improvements

+ +
    +
  • Added missing DB expressions to ExpressionFactory.
  • +
  • Added support for matching against TRUE and FALSE.
  • +
+ + +

Database Integration Changes/Improvements

+ +
    +
  • Added stored procedure support on MySQL.
  • +
  • Changed default table type on MySQL to InnoDB, added MySQL FK constraints support in the Modeler.
  • +
  • Turned on update query batching on SQL Server and Derby.
  • +
+ + +

POJO Persistence

+

(status: preview)

+ +
    +
  • Implemented class enhancer to enhance POJO's into org.apache.cayenne.Persistent
  • +
+ + + +

Remote Object Persistence

+ +
    +
  • Validation callbacks support for ROP ObjectContext. Now object validation works the same way on the ROP client as it did on the server.
  • +
+ + +

DbAttribute Scale and Precision

+ +

Changed DbAttribute "precision" property to "scale" (as it meant scale all along) and added a separate "precision" attribute to track precision.

+ +

Support for Persisting a Number of Extra Simple Property Types

+ +

Cayenne can now persist the following extra simple property types: java.util.Calendar, java.math.BigInteger, java.io.Serializable, char[], java.lang.Character, java.lang.Character[], java.lang.Byte[]. (Note that until CAY-826 is fixed, these types do not show up in the Modeler, still users can enter them directly).

+ + + +

CayenneModeler

+ +
    +
  • Added ability to specify password encryption mechanism
  • +
  • Added ability to drag and drop cayenne.xml from the filesystem to the Modeler window to open the project.
  • +
+ + + + +

Deployment and Runtime

+ +

Improved Performance

+ +
    +
  • Paginated query algorithm is changed, resulting in very significant performance improvements on large data sets (this also improves ROP paginated query performance).
  • +
  • ROP new context creation speed is improved, as EntityResolver is cached on the client after first retrieval.
  • +
  • Reduced the scope of lock on a shared cache during commit, that should result in improved concurrency.
  • +
+ + +

Improved Memory Management

+ +
    +
  • Leak free ObjectContext
  • +
  • Query lists are cached in an LRU map, so there's no indefinite memory growth when using query caching.
  • +
+ + +

Logging Switched to commons-logging from Log4J

+ +

Cayenne no longer has a Log4J dependency. Instead it uses Jakarta commons-logging, as described here. Note that 2.0 Log4J configurations should continue to work, although now it is a user responsibility to bootstrap Log4J - Cayenne will no longer do it for you. E.g. you can do this on startup:

+ +
+
org.apache.log4j.PropertyConfigurator.configure("cayenne-log.properties");
+
+ +
.
+
+ + + + + Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/Guide to 3.0 Features/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/License/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/License/index.html?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/License/index.html (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/License/index.html Sun Jul 8 12:11:31 2007 @@ -0,0 +1,255 @@ + + + + Apache Cayenne Documentation - License + + + +
+
+ Cayenne User Documentation
+ License +
+ +

This software is distributed and should be used on terms of Apache 2.0 software license. In short, it is free of charge, and unrestricted for commercial use. Here is the full license text:

+ +
+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+ +
.
+
+ + + + + Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/License/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/index.html?view=auto&rev=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/index.html (added) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/index.html Sun Jul 8 12:11:31 2007 @@ -0,0 +1,86 @@ + + + + Apache Cayenne Documentation - Overview + + + +
+
+ Cayenne User Documentation
+ Overview +
+ +

Introduction

+ +

Cayenne is a mature, powerful, full-featured open source Object/Relational Mapping (ORM) framework. Cayenne is written in Java and is intended for Java developers working with relational databases. Cayenne has been successfully used in production environment in a wide range of applications.

+ +

Cayenne allows to reduce the development time in any database project by creating an object-oriented abstraction of the database schema. Development teams using Cayenne will be able to concentrate on the core business requirements and the data model instead of the SQL details.

+ +

Cayenne features include management of persistent Java objects mapped to relational databases, single method call queries and updates (including atomic updates of all modified objects), seamless integration of multiple databases into a single virtual data source, remote object persistence, etc. Cayenne is distributed with CayenneModeler - a complete GUI mapping tool that supports reverse-engineering of RDBMS schema, editing database mappings and generation of Java source code for the persistent objects.

+ +

Cayenne comes with a comprehensive set of HTML documentation and full source code, including source code for the GUI tools. Free support is provided via user mailing lists. Commercial support and consulting services are also available.

+ +

Flavors of Cayenne

+ +

Cayenne framework provides three flavors of object persistence: Cayenne Persistence API, Remote Object Persistence (ROP) and Java Persistence API (JPA). All three are dealing with object persistence, and are based on the same underlying Cayenne stack. If you are in doubt which one to choose, go with "Cayenne Persistence API" - this is a universal choice appropriate for most Java applications. But what are the differences between the three?

+ +
    +
  • Cayenne Persistence API is a general purpose object-relational API and XML mapping format. CayenneModeler GUI tool is used to create the mapping. When we say "Cayenne" throughout the documentation, we usually mean Cayenne Persistence API flavor, unless JPA or ROP is explicitly mentioned.
  • +
+ + +
    +
  • Remote Object Persistence (ROP) is not a standalone persistence API. Rather this is a technology that enables the use of Cayenne Persistence API on remote client applications. This architecture is demonstrated here. Often (but not always) ROP clients are SWT or Swing applications that can not (or should not) access the database directly, and/or benefit from separation of the server and client logic.
  • +
+ + +
    +
  • Java Persistence API (JPA) (alpha, new in 3.0) is an emerging Java standard for object relational mapping (it is a part of EJB3). JPA mapping is commonly done via annotations directly on Java classes. The advantage of JPA is standardized mapping and persistence API, that in theory allows to switch provider vendors. The disadvantage is that the underlying provider implementation is completely hidden from the application, making it less flexible. As of the early 3.0 milestones, implementation of the JPA provider in Cayenne is not complete.
  • +
+ + + +

Sections

+ +
    +
  1. License
  2. +
  3. Guide to 3.0 Features
  4. +
  5. Guide to 1.2 Features
  6. +
  7. Guide to 1.1 Features
  8. +
+
+ +
.
+
+ + + + + Propchange: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Overview/index.html ------------------------------------------------------------------------------ svn:eol-style = native Modified: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20CWS%20Deployment/index.html?view=diff&rev=554413&r1=554412&r2=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html (original) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence CWS Deployment/index.html Sun Jul 8 12:11:31 2007 @@ -23,25 +23,25 @@
-
+
Cayenne User Documentation
Remote Object Persistence CWS Deployment

CWS Deployment with Hessian

Modified: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Client%20Deployment/index.html?view=diff&rev=554413&r1=554412&r2=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html (original) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Client Deployment/index.html Sun Jul 8 12:11:31 2007 @@ -23,7 +23,7 @@
-
+
Cayenne User Documentation
Remote Object Persistence Client Deployment
@@ -90,7 +90,7 @@
Modified: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Client/index.html?view=diff&rev=554413&r1=554412&r2=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html (original) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Client/index.html Sun Jul 8 12:11:31 2007 @@ -23,25 +23,25 @@
-
+
Cayenne User Documentation
Remote Object Persistence Coding Client
Modified: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Server/Remote%20Object%20Persistence%20Lifecycle%20Callbacks/index.html?view=diff&rev=554413&r1=554412&r2=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html (original) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/Remote Object Persistence Lifecycle Callbacks/index.html Sun Jul 8 12:11:31 2007 @@ -23,19 +23,16 @@
-
+
Cayenne User Documentation
Remote Object Persistence Lifecycle Callbacks

(since 3.0)

-

The easiest way to add server-side functionality to the web service is by registering persistent object lifecycle callbacks.

+

The easiest way to add server-side functionality to the web service is by registering persistent object lifecycle callbacks. Note that enabling server-side callbacks for ROP is done differently from the general advice above. You'll need to subclass HesianService, overriding 'createChannel':

+ +
+
public class MyService extends HessianService {
+
+    protected DataChannel createChannel() {
+        ClientServerChannel channel = new ClientServerChannel(domain);
+        channel.setLifecycleCallbacksEnabled(true);
+        return channel;
+    }
+}
+
+ +

Note that at some point server-side callbacks will be the default, so this code may no longer be necessary.

.
Modified: cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote%20Object%20Persistence%20Guide/Remote%20Object%20Persistence%20Coding%20Server/index.html?view=diff&rev=554413&r1=554412&r2=554413 ============================================================================== --- cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html (original) +++ cayenne/main/trunk/docs/doc/src/main/resources/doc/Documentation/Remote Object Persistence Guide/Remote Object Persistence Coding Server/index.html Sun Jul 8 12:11:31 2007 @@ -23,26 +23,26 @@
-
+
Cayenne User Documentation
Remote Object Persistence Coding Server

Remote Object Persistence Coding Server