Return-Path: Delivered-To: apmail-incubator-cayenne-commits-archive@locus.apache.org Received: (qmail 68711 invoked from network); 18 Dec 2006 10:25:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Dec 2006 10:25:45 -0000 Received: (qmail 70117 invoked by uid 500); 18 Dec 2006 10:25:52 -0000 Delivered-To: apmail-incubator-cayenne-commits-archive@incubator.apache.org Received: (qmail 70092 invoked by uid 500); 18 Dec 2006 10:25:52 -0000 Mailing-List: contact cayenne-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cayenne-dev@incubator.apache.org Delivered-To: mailing list cayenne-commits@incubator.apache.org Received: (qmail 70052 invoked by uid 99); 18 Dec 2006 10:25:52 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Dec 2006 02:25:52 -0800 X-ASF-Spam-Status: No, hits=-9.4 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; Mon, 18 Dec 2006 02:25:38 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 074DD1A9823; Mon, 18 Dec 2006 02:24:50 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r488202 [4/19] - in /incubator/cayenne/main/trunk/assembly/cayenne-generic: ./ src/doc/ src/doc/confluence/ src/doc/confluence/Documentation/ src/doc/confluence/Documentation/JPA Guide/ src/doc/confluence/Documentation/JPA Guide/JPA Agent/ ... Date: Mon, 18 Dec 2006 10:24:42 -0000 To: cayenne-commits@incubator.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061218102451.074DD1A9823@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Delete%20Rules/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,87 @@ + + + + Apache Cayenne Documentation - Delete Rules + + + +
+
+ Cayenne User Documentation
+ Delete Rules +
+ +
+

Delete Rules

+ +

One of the columns in the Modeler ObjRelationships panel is "Delete Rule". It tells Cayenne what to do with related objects when a source object of the relationship is deleted. Cayenne will use this delete rule to perform cleanup of other objects after a given object was deleted from the graph.

+ +

Default delete rule is No Action, meaning just that - when an object is deleted, no changes should happen to objects related to this object via a given relationship. Though this is a default, it is not very useful, and can lead to object graph corruption in many cases. It is developer responsibility to select a more meaningful delete rule. The choices are: "Nullify", "Cascade" and "Deny". Each one of them is explained below.

+ +
    +
  • Nullify Rule: When a source object is deleted, any pointers from the target object(s) back to the deleted object will be reset to null. This presumes an existence of reverse ObjRelationship for a given ObjRelationship. If no such reverse relationship exist, "Nullify" rule has no effect. This rule should be used when target object(s) of relationship can exist without the source object and do not depend on it. Example: Employee.toDepartment relationship logically should use "Nullify" rule.
  • +
+ + +
    +
  • Cascade Rule: When a source object is deleted, any of the target object(s) will be deleted too. This may cause the whole tree of objects to be deleted with one command. This rule should be used when target object(s) of relationship can not exist without the source object. Example: Department.employeeArray relationship may use "Cascade" rule.
  • +
+ + +
    +
  • Deny Rule: When a source object is being deleted, but it has at least one target object this rule would generate a runtime exception on delete attempt. This rule is usually a reflection of certain business rules in the application. Example: Department.employeeArray relationship may use "Deny" rule if there is an application requirement that explicitly states that non-empty departments can not be deleted.
  • +
+ + +
Cayenne Delete Rules vs. DB Delete Rules
+

Some databases allow to define delete rules logically similar to the rules described above. Cayenne rules differ from DB rules in that they deal with object graph instead of relational schema. Some changes to the object graph will result in database operations (e.g. resetting FK to NULL as a result of Nullify rule), some others will not (e.g. removing a deleted DataObject from the to-many array as a result of another Nullify rule).

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Delete Rules/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Many-to-Many%20Relationships/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,72 @@ + + + + Apache Cayenne Documentation - Many-to-Many Relationships + + + +
+
+ Cayenne User Documentation
+ Many-to-Many Relationships +
+ +
+

Many-to-Many Relationships

+ +

Many-to-many relationships can be modeled in two different ways:

+
    +
  • By modeling a join table as an ObjEntity. This is the most trivial case but it makes traversing many-to-many relationships relatively inconvenient.
  • +
  • Making join table transparent to the object model. This is achieved by using flattened relationships discussed further in this chapter.
  • +
+
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Many-to-Many Relationships/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,110 @@ + + + + Apache Cayenne Documentation - Modeling Inheritance + + + +
+
+ Cayenne User Documentation
+ Modeling Inheritance +
+ +
+

Modeling Inheritance

+ +

"Inheritance" is an Object Oriented concept absent from traditional RDBMS world. Still Cayenne allows to map a class hierarchy to the database schema. All classes in the hierarchy map to the same base table (this type of mapping is therefore called "single table inheritance"). One or more columns in the base table are usually assumed to be "class designator columns"; their values determine what object class to use when a fetched row is converted to a persistent object.

+ +

Creating ObjEntity Hierarchy

+ +

Consider the following class hierarchy that we want to map to a PERSON table:

+ +

+ +

For each of the four Java classes one may create individual ObjEntities, however only AbstractPerson entity would map directly to the underlying "PERSON" DbEntity. For the rest instead of selecting a value from the "Table/View" dropdown, a corresponding "super entity" from the "Inheritance" dropdown should be selected. Note that when an entity inherits from another entity, a list of inherited attributes and relationships shows up as read only information under the corresponding tabs.

+ +

Defining Class Qualifier

+ +

Afer creating entity inheritance tree, it is important to configure how the entities differ from each other, so that later when the data is fetched, Cayenne would know which class to instantiate. This is achieved by using entity qualifiers described earlier. Usually all entities in the hierarchy, except for the root, require such qualifier. It should be created in such a way that it completely defines a given entity without considering any subclasses or superclasses. In the example above, if the possible values of the class designator column are "EMPLOYEE", "MANAGER", "CUSTOMER", the following qualifiers might be used:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ObjEntityQualifierFinal Qualifier Generated by Cayenne for SelectQuery
AbstractPersonnonenone
CustomerContactpersonType = 'CUSTOMER'personType = 'CUSTOMER'
EmployeepersonType = 'EMPLOYEE'personType = 'EMPLOYEE' or personType = 'MANAGER'
ManagerpersonType = 'MANAGER'personType = 'MANAGER'
+ +
Qualifiers Note
+

Qualifiers are not inherited! When defining qualifiers for inheritance purposes keep in mind that the actual qualifier built by Cayenne will include the qualifier of a root entity and qualifiers of all its known subentities joined using "or" operator, as shown in the above example.

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-diagram.jpg URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Inheritance/inheritance-diagram.jpg?view=auto&rev=488202 ============================================================================== Binary file - no diff available. Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Inheritance/inheritance-diagram.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20ObjEntities/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,81 @@ + + + + Apache Cayenne Documentation - Modeling ObjEntities + + + +
+
+ Cayenne User Documentation
+ Modeling ObjEntities +
+ +

Modeling ObjEntities

+ +

Java object layer in Cayenne is modeled as a set of ObjEntities with relationships between them. Each org.apache.cayenne.map.ObjEntity consists of a reference to a org.apache.cayenne.map.DbEntity (table). It also specifies the Java class for a business object and a set of attributes of this class.

+ +

A default set of ObjEntities is created during reverse engineering the database. It can be modified manually. E.g. certain entities may be excluded, certain attributes deleted if they are not a part of object layer. Some relationships can be "flattened" as described later in this chapter.

+ +

Modeler has a useful function that allows to update an ObjEntity after the changes were made to an underlying DbEntity. E.g. if a new database table called PAINTING_INFO was added, and a DbEntity created for this table, the following steps can be taken to quickly create a corresponding ObjEntity.

+
    +
  • Create a new ObjEntity. Rename it to "PaintingInfo", specify the Java class.
  • +
  • From the dropdown of DbEntities select "PAINTING_INFO".
  • +
  • While the new entity is selected, from the "Project" menu select "Sync ObjEntity with DbEntity" item.
  • +
  • Inspect PaintingInfo attributes and relationships. A set of values matching the underlying DbEntity should've been created.
  • +
+ + +

ObjEntity Qualifier

+ +

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.

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling ObjEntities/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/Modeling%20Remote%20Persistence/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,80 @@ + + + + Apache Cayenne Documentation - Modeling Remote Persistence + + + +
+
+ Cayenne User Documentation
+ Modeling Remote Persistence +
+ +
+

TODO

+ +

To enable remote persistence, you must check "allow client entities" for the DataMap.

+ +

Java Client

+
    +
  • Not for Client Use.  Tag entity as "server only" when implementing remote persistence, both for class generation and runtime-security checks.
  • +
+ + + +
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/Modeling Remote Persistence/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Object%20Layer/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,64 @@ + + + + Apache Cayenne Documentation - Modeling Object Layer + + + +
+
+ Cayenne User Documentation
+ Modeling Object Layer +
+ +
+

This chapter describes modeling persistent object layer in Cayenne.

+
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Object Layer/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Queries/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Queries/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Queries/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Queries/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,57 @@ + + + + Apache Cayenne Documentation - Modeling Queries + + + +
+
+ Cayenne User Documentation
+ Modeling Queries +
+ +


+TBD

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Queries/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Tips/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Modeling%20Tips/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Tips/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Tips/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,68 @@ + + + + Apache Cayenne Documentation - Modeling Tips + + + +
+
+ Cayenne User Documentation
+ Modeling Tips +
+ +
+

This section contains a few unorganized tips on Object/Relational modeling in Cayenne. Some of these tips may become obsolete in the future as the Modeler evolves, making many things more transparent to the user.

+ +
    +
  • Pay attention to validation messages when saving the project, this helps preventing lots of runtime errors. Click on the error message to go to the problem spot.
  • +
  • All DbRelationships must have reverse relationships.
  • +
  • TO-ONE ObjRelationships do not require reverse relationships to work, but TO-MANY currently do.
  • +
  • Do not map meaningless primary key DbAttributes (like autogenerated sequential numbers) to ObjAttributes. Simply exclude them from the object model, Cayenne will do the right thing for you.
  • +
  • Do not forget that even if you work with an existing database schema, special database objects may need to be created to support automated primary key generation.
  • +
  • Display order of attributes and relationships is alphabetic and does not affect Cayenne runtime behavior.
  • +
  • Display order of Procedure Parameters is important - this is the order in which stored procedure parameters will be bound. Use "Up" and "Down" buttons in the bottom of the "Parameters" tab to change parameter position.
  • +
+
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Modeling Tips/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Converting an Existing Business Framework/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/ORM%20Case%20Study/Converting%20an%20Existing%20Business%20Framework/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Converting an Existing Business Framework/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Converting an Existing Business Framework/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,90 @@ + + + + Apache Cayenne Documentation - Converting an Existing Business Framework + + + +
+
+ Cayenne User Documentation
+ Converting an Existing Business Framework +
+ +
+

Converting an Existing Business Framework

+ +

If there is an existing data layer (e.g. DAO) that needs to be converted to Cayenne, currently most of the mapping tasks will have to be done manually using the Modeler.

+ +
Note for EOF Users
+

CayenneModeler provides import function for the EOModels. So most of the mapping conversions should be automatic.

+ +

In any case there is a good chance of reusing business methods already defined in a persistence framework. And definitely any existing database can be used as is. One possible approach to conversion is to follow these steps:

+ +
    +
  • Reverse engineer the database schema into a new Cayenne mapping project.
  • +
  • Update class names and packages match the names of the existing classes.
  • +
  • Run class generation using "generation gap" pattern (to create subclass/superclass pair for each entity). This would only create superclasses with set/get methods for persistent properties, without touching the existing classes.
  • +
  • Modify existing DAO classes to change the superclass to a corresponding generated one (e.g. "Employee extends _Employee").
  • +
  • Remove any persistent properties with their setters and getters from the subclass.
  • +
  • Remove all the DAO-specific persistence code.
  • +
  • Rewrite any other "business" methods to use DataContext for data operations.
  • +
+ + +

See the following topics explaining individual tasks involved:

+ + +
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Converting an Existing Business Framework/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Java Interface to an Existing Database/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/ORM%20Case%20Study/Java%20Interface%20to%20an%20Existing%20Database/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Java Interface to an Existing Database/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Java Interface to an Existing Database/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,73 @@ + + + + Apache Cayenne Documentation - Java Interface to an Existing Database + + + +
+
+ Cayenne User Documentation
+ Java Interface to an Existing Database +
+ +
+

Java Interface to an Existing Database

+ +

To quickly start a new project based on an existing database, CayenneModeler "reverse engineering" functionality is used. Cayenne will create an exact model of the database schema, and extrapolate it to the object layer. DataMaps created during reverse engineering will contain metadata for Java business layer. The names of classes and their properties will be compatible with Java naming conventions. E.g for a table called "USER_TYPE", a class named "UserType" will be created in the mapping.

+ +

See the following topics explaining how to reverse engineer a database into a Cayenne model:

+ + +
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/Java Interface to an Existing Database/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/New System/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/ORM%20Case%20Study/New%20System/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/New System/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/New System/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,73 @@ + + + + Apache Cayenne Documentation - New System + + + +
+
+ Cayenne User Documentation
+ New System +
+ +
+

New System

+ +

For the tasks that do not use neither an existing Java layer, nor an existing database schema, Cayenne mapping project can serve as a starting point for both. User would start a new Cayenne project, create a DataMap with DbEntities corresponding to the desired schema, and then create a set of ObjEntities on top of that. After this is done, both Java and database layer can be generated from the mapping.

+ +

See the following topics explaining individual tasks involved:

+ + +
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/New System/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/ORM%20Case%20Study/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,74 @@ + + + + Apache Cayenne Documentation - ORM Case Study + + + +
+
+ Cayenne User Documentation
+ ORM Case Study +
+ +
+

This chapter shows how ORM (Object Relational Modeling) approach should be chosen based on the project requirements and other factors. It contains links to technical aspects of modeling that are discussed elsewhere. A few scenarios are shown below that describe the most common cases that a development team may encounter on a typical O/R project. Lets assume an imaginary company called "Some Company" that sells services to consumers as its main business, but also sells consumer products, and works with business customers. There are a number of project teams working on a set of Object/Relational projects.

+ +

Project 1: Java Interface to an Existing Database

+ +

"Some Company" has a billing system that runs on Sybase database, that uses a set of UNIX C++ applications to perform nightly batch jobs and print the bills. The project goal is to create a Java client-server Object/Relational system that will be used by customer service representatives to provide customer support and correct billing errors. Such system must use the existing database schema without changing it, but both Swing frontend and Java business layer that performs the database access have to be created from scratch.

+ +

Project 2: New System

+ +

"Some Company" is planning a brand new e-commerce site for its web users. Both the database and Java business objects must be designed from scratch as a part of the same project.

+ +

Project 3: Converting an Existing Java Business Framework

+ +

Before getting into O/R technology, "Some Company" created a set of Java applications for its sales and marketing teams working with business customers. These applications use a custom persistence framework based on Data Access Objects (DAO - a term for objects that encapsulate the handcoded SQL for their persistence operations). The goal of the project is to convert DAO to Cayenne-based Object/Relational business framework, preserving all business rules, and using the existing database.

+ +
+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/ORM Case Study/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Preferences%20Panel/ClassPath/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,69 @@ + + + + Apache Cayenne Documentation - ClassPath + + + +
+
+ Cayenne User Documentation
+ ClassPath +
+ +
+

ClassPath

+ +

ClassPath Preferences panel allows users to add or remove locations of the external class libraries (JAR, ZIP, or class directories). These external libraries will be used by CayenneModeler to load JDBC drivers, custom DB adapters, or any other Java resources that are not a part of the Modeler distribution itself.

+ +
Modeler ClassNotFound Errors
+

If you encounter any CLASSPATH-related errors during DB reverse engineering, DataSource configuration, etc., in most cases you simply need to go to Preferences ClassPath panel and add an entry pointing to a missing external library.

+ +

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/prefs-classpath.jpg URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Preferences%20Panel/ClassPath/prefs-classpath.jpg?view=auto&rev=488202 ============================================================================== Binary file - no diff available. Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/ClassPath/prefs-classpath.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/General Preferences/index.html URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler%20Guide/Preferences%20Panel/General%20Preferences/index.html?view=auto&rev=488202 ============================================================================== --- incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/General Preferences/index.html (added) +++ incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/General Preferences/index.html Mon Dec 18 02:24:19 2006 @@ -0,0 +1,64 @@ + + + + Apache Cayenne Documentation - General Preferences + + + +
+
+ Cayenne User Documentation
+ General Preferences +
+ +
+

General Preferences

+ +

"General Preferences" panel currently supports configuration of a single parameter - "Preferences Save Interval". This parameter determines how often should the Modeler commit preference values that it collects automatically during normal operation (e.g. main window or panel sizes, etc.). Don't set this to a small value as this may sometimes degrade Modeler performance.

+ +
.
+
+ + + + + Propchange: incubator/cayenne/main/trunk/assembly/cayenne-generic/src/doc/confluence/Documentation/Modeler Guide/Preferences Panel/General Preferences/index.html ------------------------------------------------------------------------------ svn:eol-style = native