- Home
- LLBLGen Pro
- LLBLGen Pro Runtime Framework
LLBLGen features
Joined: 28-Apr-2005
Hi, would you please be so kind and mark the features that TierDeveloper supports in the list shown below:
Thanks for you help.
Best Regards, Mario Muja
-
Release Version Number (To indicate which version has been refered to, Maturity)
-
"Free" as in "free beer" - no license fee
-
"Free" as in "free speech" - source available
-
Has mapping GUI (For DataBase to Objects, and Objects to Database)
-
.NET ErrorProviderSupport? and DataBinding? Support (without me coding ANYTHING) for WindowsForms.NET
-
Does not requires manual SQL building, but can easily accept SQL based queries.
-
RDBMS support/independence, and the user can easily add support for other databases or persistent mechanisms (XML, Prevalence, etc).
-
Integration with an MVC framework (like User Interface App Block) o Metaframework (SpringFramework in Java, for example) for both ASP.NET and WindowsForms (Why we need ObjectRelationalIntegrationWithModelViewController?)
-
Supports relationships between objects (User can choose the names and types of the foreign keys)
-
Mapping supports grouping (GROUP BY clause)
-
Mapping supports aggregate functions (count(), avg(), etc.)
-
Includes full support of lazy resolution of all queries
-
Maintains single identities for objects returned from queries (aka "uniquing") (i.e., AddressFinder?.findById(1) == AddressFinder?.findById(1));
-
Resolves Circular Identities (aka "uniquing") (i.e., "account == account.getCustomer().getAccount()")
-
Generates Mapping as well as the Objects themselves, so you don't duplicate information in the .NET Objects and the related mapping information.
-
Supports Composite Primary Keys (I don't like this, but sometimes is useful for legacy applications)
-
Aggregate Mappings - Single field maps to multiple fields in database.
-
Supports both many to many and one to many associations
-
Supports collections of Strings, Integers, Dates, etc
-
Supports inheritance / polymorphic queries
-
Supports one to one associations
-
Can fetch associated objects using SQL outer joins
-
Support for optimistic locking / versioning
-
Support for Unit of work / object level transactions
-
Providing an ODMG compliant API and/or OCL and/or OPath
-
Does NOT require "extra" database tables holding locks, metadata, etc.
-
Supports multiservers (clustering) and simultaneous access by other applications without loss of transaction integrity
-
This is a question: ¿Requires code generation?
-
This is a question: ¿Requires RuntimeReflection??
-
Query Caching - Built-in support (developer writes no code). The following two identical queries will hit the database only once. The second time cached results will be returned. Address address = AddressFinder?.selectByPrimaryKey(new Long(1)); assertTrue(address == AddressFinder?.selectByPrimaryKey(new Long(1)));
-
Supports sequences and identity/autoincrement columns for primary key generation (Not using the incorrect SELECT MAX method!) (The user can choose the name and type of the primary key field)
-
Supports ternary associations
-
Supports mapping of one class to multiple tables ( Sometimes legacy databases leave you no choice.)
-
Supports mapping of multiple classes to one table
-
Supports persistence of properties through private fields (Not very important for me, but I am curious)
-
Supports persistence of properties through accessors (get/set methods or properties, and they can be private)
-
Supports disconnected operations: Populate objects from database, disconnect, create/remove/modify objects (on client, another Process) and apply changes to database (much) later
-
Support for ASP.NET (Visually?, Out of the box).
-
Support for Remoting (Visually?, Out of the box). Distributed Objects.
-
Support for WebServices (Visually?,Out of the box).
-
Support for information exchange with System.Data.DataSet?.
-
In memory object filtering (Specifically ask for a complex filter on an ArrayList of Objects without hitting the database)
-
Batch Update (Update lots of objects without object creation).
-
Batch Delete (Delete lots of objects without object creation, for example this is very useful in Cascade Delete for ToMany? relationships).
-
Saving Changes with one line of code (ObjectsEngine?.CommitAllChanges?()), does all the inserts, deletes and updates in the right order, without user intervention, and without violating Master/Detail relationships.
MGA wrote:
Hi, would you please be so kind and mark the features that TierDeveloper supports in the list shown below:
I think you're on the wrong forum. This is the forum for LLBLGen Pro, not alachi's TierDeveloper .
If you want me to fill it in for LLBLGen Pro, I'll do that.
The usenet one is pretty dated, I answered that one in the objectspaces newsgroup if I'm not mistaken
I've answered the questions below.
- Release Version Number (To indicate which version has been refered to, Maturity)
1.0.2004.2, which is the 5th revision since September 2003. (1.0.2003.1, 1.0.2003.2, 1.0.2003.3, 1.0.2004.1)
- "Free" as in "free beer" - no license fee
No.
- "Free" as in "free speech" - source available
Only the designer and assemblies aren't available in sourcecode form.
- Has mapping GUI (For DataBase to Objects, and Objects to Database)
Yes
- .NET ErrorProviderSupport? and DataBinding? Support (without me coding ANYTHING) for WindowsForms.NET
Full databinding support, no support for ErrorProvider
- Does not requires manual SQL building, but can easily accept SQL based queries.
Yes
- RDBMS support/independence, and the user can easily add support for other databases or persistent mechanisms (XML, Prevalence, etc).
True RDBMS independence. Adding additional persistence frameworks is hard, as with 100% of the rest of the persistence frameworks for .NET.
- Integration with an MVC framework (like User Interface App Block) o Metaframework (SpringFramework in Java, for example) for both ASP.NET and WindowsForms (Why we need ObjectRelationalIntegrationWithModelViewController?)
With a few lines of code.
- Supports relationships between objects (User can choose the names and types of the foreign keys)
Yes.
- Mapping supports grouping (GROUP BY clause)
Yes.
- Mapping supports aggregate functions (count(), avg(), etc.)
Yes.
- Includes full support of lazy resolution of all queries
Yes.
- Maintains single identities for objects returned from queries (aka "uniquing") (i.e., AddressFinder?.findById(1) == AddressFinder?.findById(1));
Support for that is available through Context objects to get a more fine gained uniquing experience (semantical context boundaries)
- Resolves Circular Identities (aka "uniquing") (i.e., "account == account.getCustomer().getAccount()")
Yes, if used in combination with a Context.
- Generates Mapping as well as the Objects themselves, so you don't duplicate information in the .NET Objects and the related mapping information.
Yes.
- Supports Composite Primary Keys (I don't like this, but sometimes is useful for legacy applications)
Yes.
- Aggregate Mappings - Single field maps to multiple fields in database.
No.
- Supports both many to many and one to many associations
Yes.
- Supports collections of Strings, Integers, Dates, etc
No.
- Supports inheritance / polymorphic queries
Not yet (June)
- Supports one to one associations
Yes.
- Can fetch associated objects using SQL outer joins
Yes, though it uses subqueries as these are often faster in these scenario's.
- Support for optimistic locking / versioning
No locking is performed, as that limits scaling. Locking is controllable through transaction parameters. Versioning is done in-memory on a per-entity basis.
- Support for Unit of work / object level transactions
Yes.
- Providing an ODMG compliant API and/or OCL and/or OPath
No, as there is no standard on .NET for this.
- Does NOT require "extra" database tables holding locks, metadata, etc.
Yes, it does NOT require extra database tables.
- Supports multiservers (clustering) and simultaneous access by other applications without loss of transaction integrity
Yes.
- This is a question: ¿Requires code generation?
Yes.
- This is a question: ¿Requires RuntimeReflection??
No. (only for SaveTransaction(savepoint) support)
- Query Caching - Built-in support (developer writes no code). The following two identical queries will hit the database only once. The second time cached results will be returned. Address address = AddressFinder?.selectByPrimaryKey(new Long(1)); assertTrue(address == AddressFinder?.selectByPrimaryKey(new Long(1)));
Query caching is a mythical marketing term which is not useful in a normal application. If a second query isn't fired on the database, you'll get stale data:. Process A: T: Fetch customers T+2: Fetch customers
Process B: T+1: add customer
-> Process A doesn't fetch new customer added by B at T+2 -> unusable feature (unless you like wrong data being returned from a methodcall of course )
- Supports sequences and identity/autoincrement columns for primary key generation (Not using the incorrect SELECT MAX method!) (The user can choose the name and type of the primary key field)
Yes.
- Supports ternary associations
No.
- Supports mapping of one class to multiple tables ( Sometimes legacy databases leave you no choice.)
Not yet (In June)
- Supports mapping of multiple classes to one table
Not yet (in June)
- Supports persistence of properties through private fields (Not very important for me, but I am curious)
No, LLBLGen Pro uses an own tracking mechanism which works disconnected as well
- Supports persistence of properties through accessors (get/set methods or properties, and they can be private)
No, LLBLGen Pro uses an own tracking mechanism which works disconnected as well
- Supports disconnected operations: Populate objects from database, disconnect, create/remove/modify objects (on client, another Process) and apply changes to database (much) later
Yes.
- Support for ASP.NET (Visually?, Out of the box).
Yes.
- Support for Remoting (Visually?, Out of the box). Distributed Objects.
Yes.
- Support for WebServices (Visually?,Out of the box).
Yes.
- Support for information exchange with System.Data.DataSet?.
Yes.
- In memory object filtering (Specifically ask for a complex filter on an ArrayList of Objects without hitting the database)
No.
- Batch Update (Update lots of objects without object creation).
Yes.
- Batch Delete (Delete lots of objects without object creation, for example this is very useful in Cascade Delete for ToMany? relationships).
Yes.
- Saving Changes with one line of code (ObjectsEngine?.CommitAllChanges?()), does all the inserts, deletes and updates in the right order, without user intervention, and without violating Master/Detail relationships.
Yes.