LLBLGen features

Posts   
 
    
MGA
User
Posts: 1
Joined: 28-Apr-2005
# Posted on: 28-Apr-2005 15:17:35   

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


  1. Release Version Number (To indicate which version has been refered to, Maturity)

  2. "Free" as in "free beer" - no license fee

  3. "Free" as in "free speech" - source available

  4. Has mapping GUI (For DataBase to Objects, and Objects to Database)

  5. .NET ErrorProviderSupport? and DataBinding? Support (without me coding ANYTHING) for WindowsForms.NET

  6. Does not requires manual SQL building, but can easily accept SQL based queries.

  7. RDBMS support/independence, and the user can easily add support for other databases or persistent mechanisms (XML, Prevalence, etc).

  8. 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?)

  9. Supports relationships between objects (User can choose the names and types of the foreign keys)

  10. Mapping supports grouping (GROUP BY clause)

  11. Mapping supports aggregate functions (count(), avg(), etc.)

  12. Includes full support of lazy resolution of all queries

  13. Maintains single identities for objects returned from queries (aka "uniquing") (i.e., AddressFinder?.findById(1) == AddressFinder?.findById(1));

  14. Resolves Circular Identities (aka "uniquing") (i.e., "account == account.getCustomer().getAccount()")

  15. Generates Mapping as well as the Objects themselves, so you don't duplicate information in the .NET Objects and the related mapping information.

  16. Supports Composite Primary Keys (I don't like this, but sometimes is useful for legacy applications)

  17. Aggregate Mappings - Single field maps to multiple fields in database.

  18. Supports both many to many and one to many associations

  19. Supports collections of Strings, Integers, Dates, etc

  20. Supports inheritance / polymorphic queries

  21. Supports one to one associations

  22. Can fetch associated objects using SQL outer joins

  23. Support for optimistic locking / versioning

  24. Support for Unit of work / object level transactions

  25. Providing an ODMG compliant API and/or OCL and/or OPath

  26. Does NOT require "extra" database tables holding locks, metadata, etc.

  27. Supports multiservers (clustering) and simultaneous access by other applications without loss of transaction integrity

  28. This is a question: ¿Requires code generation?

  29. This is a question: ¿Requires RuntimeReflection??

  30. 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)));

  31. 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)

  32. Supports ternary associations

  33. Supports mapping of one class to multiple tables ( Sometimes legacy databases leave you no choice.)

  34. Supports mapping of multiple classes to one table

  35. Supports persistence of properties through private fields (Not very important for me, but I am curious)

  36. Supports persistence of properties through accessors (get/set methods or properties, and they can be private)

  37. Supports disconnected operations: Populate objects from database, disconnect, create/remove/modify objects (on client, another Process) and apply changes to database (much) later

  38. Support for ASP.NET (Visually?, Out of the box).

  39. Support for Remoting (Visually?, Out of the box). Distributed Objects.

  40. Support for WebServices (Visually?,Out of the box).

  41. Support for information exchange with System.Data.DataSet?.

  42. In memory object filtering (Specifically ask for a complex filter on an ArrayList of Objects without hitting the database)

  43. Batch Update (Update lots of objects without object creation).

  44. Batch Delete (Delete lots of objects without object creation, for example this is very useful in Cascade Delete for ToMany? relationships).

  45. 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.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39933
Joined: 17-Aug-2003
# Posted on: 28-Apr-2005 15:47:59   

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 smile .

If you want me to fill it in for LLBLGen Pro, I'll do that.

Frans Bouma | Lead developer LLBLGen Pro
psandler
User
Posts: 540
Joined: 22-Feb-2005
# Posted on: 28-Apr-2005 16:13:00   

This exact question was posted (and replied to by Frans) on usenet. I remember reading when I was evaluating LLBL.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39933
Joined: 17-Aug-2003
# Posted on: 28-Apr-2005 16:51:23   

The usenet one is pretty dated, I answered that one in the objectspaces newsgroup if I'm not mistaken wink

I've answered the questions below.

  1. 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)

  1. "Free" as in "free beer" - no license fee

No.

  1. "Free" as in "free speech" - source available

Only the designer and assemblies aren't available in sourcecode form.

  1. Has mapping GUI (For DataBase to Objects, and Objects to Database)

Yes

  1. .NET ErrorProviderSupport? and DataBinding? Support (without me coding ANYTHING) for WindowsForms.NET

Full databinding support, no support for ErrorProvider

  1. Does not requires manual SQL building, but can easily accept SQL based queries.

Yes

  1. 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.

  1. 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.

  1. Supports relationships between objects (User can choose the names and types of the foreign keys)

Yes.

  1. Mapping supports grouping (GROUP BY clause)

Yes.

  1. Mapping supports aggregate functions (count(), avg(), etc.)

Yes.

  1. Includes full support of lazy resolution of all queries

Yes.

  1. 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)

  1. Resolves Circular Identities (aka "uniquing") (i.e., "account == account.getCustomer().getAccount()")

Yes, if used in combination with a Context.

  1. Generates Mapping as well as the Objects themselves, so you don't duplicate information in the .NET Objects and the related mapping information.

Yes.

  1. Supports Composite Primary Keys (I don't like this, but sometimes is useful for legacy applications)

Yes.

  1. Aggregate Mappings - Single field maps to multiple fields in database.

No.

  1. Supports both many to many and one to many associations

Yes.

  1. Supports collections of Strings, Integers, Dates, etc

No.

  1. Supports inheritance / polymorphic queries

Not yet (June)

  1. Supports one to one associations

Yes.

  1. Can fetch associated objects using SQL outer joins

Yes, though it uses subqueries as these are often faster in these scenario's.

  1. 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.

  1. Support for Unit of work / object level transactions

Yes.

  1. Providing an ODMG compliant API and/or OCL and/or OPath

No, as there is no standard on .NET for this.

  1. Does NOT require "extra" database tables holding locks, metadata, etc.

Yes, it does NOT require extra database tables.

  1. Supports multiservers (clustering) and simultaneous access by other applications without loss of transaction integrity

Yes.

  1. This is a question: ¿Requires code generation?

Yes.

  1. This is a question: ¿Requires RuntimeReflection??

No. (only for SaveTransaction(savepoint) support)

  1. 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 wink )

  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)

Yes.

  1. Supports ternary associations

No.

  1. Supports mapping of one class to multiple tables ( Sometimes legacy databases leave you no choice.)

Not yet (In June)

  1. Supports mapping of multiple classes to one table

Not yet (in June)

  1. 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

  1. 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

  1. Supports disconnected operations: Populate objects from database, disconnect, create/remove/modify objects (on client, another Process) and apply changes to database (much) later

Yes.

  1. Support for ASP.NET (Visually?, Out of the box).

Yes.

  1. Support for Remoting (Visually?, Out of the box). Distributed Objects.

Yes.

  1. Support for WebServices (Visually?,Out of the box).

Yes.

  1. Support for information exchange with System.Data.DataSet?.

Yes.

  1. In memory object filtering (Specifically ask for a complex filter on an ArrayList of Objects without hitting the database)

No.

  1. Batch Update (Update lots of objects without object creation).

Yes.

  1. Batch Delete (Delete lots of objects without object creation, for example this is very useful in Cascade Delete for ToMany? relationships).

Yes.

  1. 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.

Frans Bouma | Lead developer LLBLGen Pro