On 11/21/12, Remy Blank <remy.bl...@pobox.com> wrote:
> Olemis Lang wrote:
>> The ultimate goal would be to eliminate the current
>> dependency with hard-coded SQL queries based on current database
>> schema (i.e. things happening on top of DB connection abstraction layer,
>> but beneath Trac business logic layer) so that we could be able to
>> override
>> default implementation (i.e. current SQL queries) with our own
>> implementation .
>
> How do you plan to make sure the dozens of available plugins continue
> working after such a change?
>

Good question . The solution is a bit diifficult to explain in a
single e-mail message , and it is still being improved . That's why we
decided to write BEP 3 [1]_ in first place . I'd appreciate if you
please could read it , in order to get a better idea on what we are
trying to do beyond single environments proposal [2]_ .

>> PS: I know you have rejected the use of ORMs before , but this is
>> substantially different (... I guess ...) and IMO very important for us.
>
> That must have been before my time in Trac, but...

well, I recall discussions about not using ORMs and stick to SQL
queries understood by the vast majority of dialects instead .

> how is this
> substantially different?
>

well , ORMs API is highly influenced by the underlying DB schema and
SQL queries . DAO API may be designed considering business rules .
Indeed DAO methods may be implemented with the help of ORM frameworks
. I found [3] somewhere out there and this is a naïve comparison ,
hope you get the idea
;)

ORM:

q = OrmDbQuery()

q.select('u').from('User', 'u').where('u.id = ?1').orderBy('u.name', 'ASC');
...

DAO:

def get_something_I_want(...):
    ...

As you can see in the las case it is not necessary to know how the
underlying DB schema is designed but what business data is needed .
More or less that's the idea . Afterwards it would be possible to
implement such methods in many ways , and all the business logic on
top of it still will work even if data access layer turns out to be
completely different .

.. [1] BEP 3 : Multi-product architecture
        (https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0003)

.. [2] Multiple Projects within a Single Trac Environment
        (http://trac.edgewall.org/wiki/TracMultipleProjects/SingleEnvironment)

.. [3] Data Access Object (DAO) versus Object Relational Mapping (ORM)
        
(http://www.codefutures.com/weblog/andygrove/archives/2005/02/data_access_obj.html)

-- 
Regards,

Olemis.

Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/

Featured article:

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to trac-dev@googlegroups.com.
To unsubscribe from this group, send email to 
trac-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en.

Reply via email to