There are others ;)
QueryObject based directly on Criteria/QueryOver
QueryObject based on custom DSL as wrapper of Criteria/QueryOver
Specification pattern based directly on Criteria/QueryOver instead on LINQ

On Tue, May 3, 2011 at 2:41 PM, José F. Romaniello
<[email protected]>wrote:

> I wrote some examples implementations in gist.github for future reference.
> As you can see we already write so many posts on the subject, so i am not
> planning to write another..
> https://gist.github.com/953700 <-- query object (or EQO)
> https://gist.github.com/953718 <-- dao with expressions
> https://gist.github.com/953721 <-- dao with specific methods
> https://gist.github.com/953725 <-- dao with specification pattern (
> linqspecs.codeplex.com)
>
> 2011/5/3 Fabio Maulo <[email protected]>
>
>> http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html
>>
>> http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-repository.html
>>  <http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html>That’s
>> all ? … yes that’s all… or that should be all.
>>
>> The creation of a GOD LINQ-provider is delegated to the big master Fowler
>> or, if you want, to you.
>> In the meantime I will use what I have available today and NH has at least
>> 6 ways to write/optimize a query hitting DB.
>>
>> On Tue, May 3, 2011 at 11:27 AM, Angel Java Lopez 
>> <[email protected]>wrote:
>>
>>> Hmmmm ... "... the repository pattern thing to mix both... many queries
>>> methods" ?
>>>
>>> According to:
>>>
>>> http://blogs.hibernatingrhinos.com/nhibernate/archive/0001/01/01/the-repository-pattern.aspx
>>>
>>> Martin Fowler writes<http://martinfowler.com/eaaCatalog/repository.html>:
>>>
>>>
>>> "*A Repository mediates between the domain and data mapping layers,
>>> acting like an in-memory domain object collection. Client objects
>>> construct query specifications declaratively and submit them to Repository
>>> for satisfaction. Objects can be added to and removed from the
>>> Repository, as they can from a simple collection of objects, and the mapping
>>> code encapsulated by the Repository will carry out the appropriate
>>> operations behind the scenes. Conceptually, a Repository encapsulates the
>>> set of objects persisted in a data store and the operations performed over
>>> them, providing a more object-oriented view of the persistence layer.
>>> Repository also supports the objective of achieving a clean separation and
>>> one-way dependency between the domain and data mapping layers.*"
>>>
>>> In my interpretation, "query specifications" are not related to query
>>> methods in repository.
>>>
>>> DAO have query methods.
>>> Repository has ONE way/method/whatever that SATISFIES query
>>> specifications.
>>>
>>> What is the current jargon, definitions for DAOs and repositories?
>>>
>>> Angel "Java" Lopez
>>> http://www.ajlopez.com
>>> http://twitter.com/ajlopez
>>>
>>>
>>> On Tue, May 3, 2011 at 11:07 AM, José F. Romaniello <
>>> [email protected]> wrote:
>>>
>>>> Exactly!, it is very related with command and queries separation.. While
>>>> it is okey and doable to have something generic to CUD
>>>> (Create/Update/Delete) it is useful to have specific artifacts for
>>>> queries...
>>>> The repository pattern thing to mix both, you end up with few CUD
>>>> generic or inherited methods  and many queries methods.
>>>> And having linq scattered all over the application is not good.
>>>>
>>>> 2011/5/3 <[email protected]>
>>>>
>>>> I've used the repository pattern for years and find that it works well,
>>>>> but as systems grow I find that changes to your repositories' interfaces 
>>>>> can
>>>>> be a bit of a pain. As such I've started moving more towards separating
>>>>> things into commands and queries (I'm not talking about CQRS!) and I think
>>>>> that the Enhanced Query Object that Fabio describes is a great approach to
>>>>> reading data.
>>>>>
>>>>>
>>>>>
>>>>> On May 3, 2011 1:02pm, "José F. Romaniello" <[email protected]>
>>>>> wrote:
>>>>> > I think Dao and Repository are overrated pattern...
>>>>> > But i don't like to mix my nhibernate stuff with a webform for
>>>>> instance..
>>>>> > so i think the best approach is described by fabio here:
>>>>> > http://fabiomaulo.blogspot.com/2010/07/enhanced-query-object.html
>>>>> >
>>>>> >
>>>>> > the idea is that you have one class for this specific querying
>>>>> thing.. you test the query against the database, and you test your webform
>>>>> against a mocked IQuerySomething
>>>>> >
>>>>> > I've sent this same mail to the list like 25 times this year....
>>>>> sorry
>>>>> >
>>>>> >
>>>>> > 2011/5/3 Marcello Esposito [email protected]>
>>>>> >
>>>>> > No answers. Mmmhh.
>>>>> >
>>>>> >
>>>>> >
>>>>> > I mean: do you use in your programs the GenericDAO (e.g. var
>>>>>
>>>>> >
>>>>> > dataSource = (new someEntityDAO()).GetRightEntities())?
>>>>> >
>>>>> >
>>>>> >
>>>>> > Or do you prefer to directly write in your (Web)Forms code like:
>>>>> >
>>>>> >
>>>>> >
>>>>> > var dataSource = CurrentSession.CreateQuery("from someEntity e
>>>>> >
>>>>> > where...");
>>>>> >
>>>>> >
>>>>> >
>>>>> > Thanks again,
>>>>> >
>>>>> > marcello.
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > On 28 Apr, 22:22, Marcello Esposito [email protected]> wrote:
>>>>> >
>>>>> > > Hi all.
>>>>> >
>>>>> > >
>>>>> >
>>>>> > > In NHibernate in Action, last chapter, the authors present the
>>>>> >
>>>>> > > GenericDAO pattern.
>>>>>
>>>>> >
>>>>> > >
>>>>> >
>>>>> > > It looks very clean to me.
>>>>> >
>>>>> > >
>>>>> >
>>>>> > > When approaching to write a brand new architecture for a
>>>>> non-trivial
>>>>> >
>>>>> > > information system, would you systematically use this pattern for
>>>>> all
>>>>> >
>>>>> > > the involved persistent classes? Are there some disadvantages in
>>>>> doing
>>>>> >
>>>>> > > so?
>>>>> >
>>>>> > >
>>>>> >
>>>>> > > Can this pattern hide NHibernate machinery behind the persistency
>>>>> >
>>>>> > > layers thus avoiding to completely exploit its functionalities
>>>>> (e.g.
>>>>> >
>>>>> > > ToFuture())?
>>>>> >
>>>>> > >
>>>>> >
>>>>> > > Thanks in advance,
>>>>> >
>>>>> > > marcello esposito.
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> >
>>>>> > You received this message because you are subscribed to the Google
>>>>> Groups "nhusers" group.
>>>>> >
>>>>> > To post to this group, send email to [email protected].
>>>>> >
>>>>> > To unsubscribe from this group, send email to
>>>>> [email protected].
>>>>> >
>>>>> > For more options, visit this group at
>>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> >
>>>>> > You received this message because you are subscribed to the Google
>>>>> Groups "nhusers" group.
>>>>> >
>>>>> > To post to this group, send email to [email protected].
>>>>> >
>>>>> > To unsubscribe from this group, send email to
>>>>> [email protected].
>>>>> >
>>>>> >
>>>>> > For more options, visit this group at
>>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "nhusers" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected].
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>>
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "nhusers" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected].
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/nhusers?hl=en.
>>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "nhusers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/nhusers?hl=en.
>>>
>>
>>
>>
>> --
>> Fabio Maulo
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>



-- 
Fabio Maulo

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to