Return-Path: X-Original-To: apmail-cayenne-commits-archive@www.apache.org Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7D8871035C for ; Fri, 17 Oct 2014 00:38:30 +0000 (UTC) Received: (qmail 26333 invoked by uid 500); 17 Oct 2014 00:38:30 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 26146 invoked by uid 500); 17 Oct 2014 00:38:30 -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 25949 invoked by uid 99); 17 Oct 2014 00:38:30 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Oct 2014 00:38:30 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Oct 2014 00:37:57 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 48BE92388C02 for ; Fri, 17 Oct 2014 00:37:29 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r926030 [7/8] - in /websites/staging/cayenne/trunk/content: ./ 2010/11/29/ 2010/12/02/ 2011/03/08/ 2011/06/21/ 2011/09/26/ 2012/06/12/ 2013/02/ 2013/07/ 2014/02/ 2014/09/ dev/ docs/ docs/1.2/ docs/1.2/grammar/ docs/2.0/ docs/3.0/ docs/3.1/ Date: Fri, 17 Oct 2014 00:37:06 -0000 To: commits@cayenne.apache.org From: buildbot@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20141017003729.48BE92388C02@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: websites/staging/cayenne/trunk/content/docs/3.0/generated-columns.html ============================================================================== --- websites/staging/cayenne/trunk/content/docs/3.0/generated-columns.html (original) +++ websites/staging/cayenne/trunk/content/docs/3.0/generated-columns.html Fri Oct 17 00:36:58 2014 @@ -99,7 +99,7 @@ adapter.setSupportsGeneratedKeys(
MS SQLServer Note
MS drivers prior to 2005 version do not support generated columns, while newer drivers and jTDS support it just fine. Cayenne can automatically detect the driver type and configure SQLServerAdapter, but only when AutoAdapter is used. To make sure auto-detection works, clear the "Custom Adapter" field for the corresponding DataNode in the Modeler.

-

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


-
-
-
Use setResolvingInherited(false) with caution, and only if you never plan to work with subclasses. The downside of it is that the DataContext may end up with two objects pointing to the same database row, thus violating uniquing principle. With the above example, this may happen if at a later time user decides to fetch Managers directly, or if a Manager object is obtained via a relationship.

-
-
-
-
-
-
-
-
-
-
-
-


-
-
-
-
-
-
-
-
-
-


-
-
-
-

ObjEntities can hold a qualifier expression that is automatically appended to all SelectQueries rooted in a given ObjEntity. Entity qualifier can be viewed as a global data filter for a given entity. One area where this feature is used is inheritance mapping, however by itself it has nothing to do with inheritance as such and can be used standalone. To set an entity qualifier, type a Cayenne expression into the "Qualifier" field of the ObjEntity editor panel.


-
-
-
-

Note that flattened attributes can be used with or without inheritance, however in combination with single-table inheritance mapping, they give us "vertical" inheritance.


-
-
-

All cascading operations (such as a select query or a cascading update) initiated by a nested context will have to travel through the stack of parent contexts, incurring certain delay at each stack level. The delay is due to the fact that each context has to update its own objects during most operations. So nesting should only be used when application specifics require to do so. Also nesting of more than a few levels should be avoided.


-
-
-

TODO: an example, and figure out how to make it a parameter in the Modeler


-

ObjectContext accesses the underlying persistence stack via a parent DataChannel. ObjectContexts that support multiple levels of nesting (such as DataContext) themselves implement a org.apache.cayenne.DataChannel interface.


-
-
-
-
-
Combining data rows and paginated queries
Cayenne supports combining both performance optimizations in the same query - fetching data rows (see previous chapters) and paginated queries. So if users work with tabular data and don't care much about real objects, combining the two approaches would improve speed and memory use even more.

-
-

As described in the following chapters a path expression is usually matched against some value (see for example ExpressionFactory API - the first argument to each method is a path, and a second - an object value that is matched against the path). A type of such value must be compatible with the type of the property pointed to by the path. E.g. toArtist.artistName can only be matched against a String, and toArtist - against instances of Artist.


-
-
-
-
-
-

Each path expression in a qualifier results in a SQL JOIN in a generated SQL. By default all joins are INNER joins. If LEFT OUTER joins are desirable, users can specify them with a plus sign ("+") after each affected relationship segment in a path expression. E.g. a path like "paintingArray+.name" would result in a LEFT OUTER JOIN for an Artist SelectQuery, ensuring that artists without joins are also included in the query result.


-
-
-
-
-
-

Performance-wise, Maps have the most overhead of all collection options. Sets are somewhat slower than Lists or Collections (Collections are implemented as Lists internally). Considering that Cayenne Lists are internally managed as ordered Sets, and are not allowed to contain the same object more than once, you may want to avoid modeling relationships as Sets at all, unless the object public interface requirements warrant that.


-
-
-
-

Instead of all the above you may be able to register an additional SerializerFactory to handle your extended type by using com.caucho.hessian.io.SerializerFactory.addFactory((AbstractSerializerFactory factory). This will give you complete control over the process.


-
-
-
-
Hessian Versions
Cayenne 3.0 works correctly with Hessian 3.0.x and 3.1.x. Hessian 4.0.2 has a bug that stops ROP. Hessian 3.2.x is binary incompatible with other versions and cannot be used.

-
-

The easiest way to add server-side functionality to the web service is by registering persistent object lifecycle callbacks. Callbacks are enabled by default, so nothing special needs to be done beyond setting up the listeners.


-
-

-
Modified: websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-security.html ============================================================================== --- websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-security.html (original) +++ websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-security.html Fri Oct 17 00:36:58 2014 @@ -59,7 +59,7 @@
-
-
-

-

-

-
Modified: websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-tutorial-webservice.html ============================================================================== --- websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-tutorial-webservice.html (original) +++ websites/staging/cayenne/trunk/content/docs/3.0/remote-object-persistence-tutorial-webservice.html Fri Oct 17 00:36:58 2014 @@ -165,7 +165,7 @@ INFO: finished configuration loading in

-