Olá Diogo,
Tenho um Repositório genérico semelhante ao seu, usar Generics fica muito
prático.
Mas a pergunta era direcionada ao George, pois para mim, ficou um pouco vago
quanto a injeção dos repositórios quando se usa Grails,
pois se for via IoC do Spring, teoricamente ocorreria o mesmo problema. Por
isso perguntei.
Um abraço, bom dia a todos.
2008/8/27 Diogo Camelo Maximo <[EMAIL PROTECTED]>
> *Mas agora só me responda o que lhe perguntei, de acordo com o EricEvans,
> se não for via IoC, aa intâncias no caso do repositorios são injetadas via
> Factories, a sua implementação está assim? Como você faz a injeção?*
>
> Cara, aqui no sistema cada repositorio referente ao dominio estende de um
> repositorio base onde colocamos todos os metodos comuns a todos
> repositorios, como o metodo save, getbyid, update, delete, findAll, etc....
> Cada repositorio que estende essa classe faz uma tipagem da classe de
> dominio que será usada, assim o essa classe generica ja sabe com qual entity
> esta trabalhando, nao há a necessidade de fazer cast's...
> *public* *class* ClientRepository *extends* DAOBase<Client>{
> Quando chamar algum método do DAOBase como save o parametro será
> dinamicamente tipado de acordo com o objeto tipado pelo repositorio.
> Dentro do dominio client eu tenho uma intancia de CLientRepository injetada
> pelo spring.
> Dentro do client é só usar...
> ....
> public Client getById(){
> return clientRepository.getById(id);
> }
> ...
> Essa é a declaração no spring.
>
> <bean id="clientRepository" class=
> "com.investflex.flexscan.model.repository.ClientRepository">
> <property name="sessionFactory" ref="sessionFactory" />
> </bean>
>
> <bean id="client" class="com.investflex.flexscan.model.domain.Client">
> <property name="clientRepository" ref="clientRepositoryProxy" />
> </bean>
>
>
>
> 2008/8/26 Rodrigo Pereira Fraga <[EMAIL PROTECTED]>
>
>> Olá,
>>
>> Eita Mário mt corrido ae? agora não nem aka digows já é aka Rodrigo,
>> ehehhe kurti kra!
>> =)
>>
>> Quanto ao George:
>>
>> vc tem q estudar DDD, e ver q activerecord é um pattern, vc recebe tudo
>>> isso de gratis :D
>>>
>>> outro mundo :)
>>
>>
>> Sobre DDD, conheço sim, tenho um artigo sobre Flex+Java que usa alguns
>> princípios do DDD (não era o foco), tema de monografia, e tem um artigo
>> submetido a aprovação em um evento aqui da região.
>>
>> ActiveRecord, também conheço, também fiz um artigo sobre padrões de
>> negócio em específico o Domain Model (Martin PoEAA) que esboçava o uso do
>> AR. Em todos os projetos java que fiz até hoje, fiz uso do padrão DataMapper
>> aka DataAcessObject (DAO), é de interesse meu desenvolver um projeto
>> utilizando ActiveRecord.
>>
>> Mas! falar de patterns e modelo de arquitetura como o Mário (aka Juninho
>> heeheh) é igual falar de time de futebol e religião, ainda mais quando DDD
>> está no meio, acredito que essa conversa cabe a outro forum (mais uma thread
>> sobre DDD no GUJ...).
>>
>> Quanto ao Grails, concerteza você me animou mais ainda a estuda-lo,
>> arrumarei tempo concerteza!
>>
>> Quanto ao Diogo,
>>
>> Que legal que já fez o aspecto, acredito que evoluir para um genérico não
>> será complicado. Penso que todos os repositórios devam extender de um
>> Repositorio, a qual no aspecto você trabalharia apenas com esse genérico.
>>
>> ..
>>
>>
>> Um forte abraço a todos, tenham uma ótima noite.
>>
>>
>> Mas agora só me responda o que lhe perguntei, de acordo com o EricEvans,
>> se não for via IoC, aa intâncias no caso do repositorios são injetadas via
>> Factories, a sua implementação está assim? Como você faz a injeção?
>> 2008/8/26 Diogo Camelo Maximo <[EMAIL PROTECTED]>
>>
>>> Oi pessoal, como dito pelo Mario realmente esse tópico tá bem legal,
>>> gostaria de agradecer a ajuda de todos, boas novas, conseguir implementar o
>>> aspecto, por enquanto ainda não está genérico(isso é questão de tempo),
>>> pretendo colocar ele pra pegar os parametros passado e por reflection
>>> injetar todas as depedencias nos objetos, pretendo deixar isso para o
>>> próximo incremento.
>>> Por enquanto criei um hashmap onde mapeei o nome do metodo chamado
>>> para um Interceptor, assim consigo fazer a ação antes do método ser chamado,
>>> não tá da melhor maneira, mas por enquanto o ótimo é inimigo do bom.
>>> *
>>>
>>> public
>>> **void* before(Method method, Object[] objects, Object object)
>>> *throws*Throwable {
>>> Interceptor interceptor = *mapServices*.get(method.getName());
>>> interceptor.execute(method, objects, object, SpringUtils.*
>>> getApplicationContext*());
>>> }
>>> **
>>> *Sobre o Grails*
>>> Realmente o Grails seria uma boa, é bem parecido com Ruby On Rails, a
>>> camada de model implementa o pattern ActionRecord que eu acho muito legal,
>>> tem até um tutorial <http://mail.google.com/> bem bacana que vi esses
>>> dias, com o Grails(assim como Ruby on Rails) todo código se tornaria bem
>>> mais simples, vejam esse exemplo que peguei do tutorial da camada de
>>> serviço.
>>> //Service com Grails
>>> def void save(Person p) {
>>> p.save();
>>> }
>>> O único problema ;e que estamos prestes a lançar uma release do sistema e
>>> nao podemos jogar o que foi feito no lixo, vou deixar o Grails para os
>>> próiximos sistemas afinal produtividade é dinheiro economizado.
>>> Abraços a todos.
>>> Mais uma vez obrigado.
>>> Diogo Camelo Máximo
>>> http://www.javaplace.blogspot.com
>>>
>>>
>>>
>>> 2008/8/26 Mário Júnior <[EMAIL PROTECTED]>
>>>
>>> Entao... to voltando ao tópico =D (passei mal hoje e fiquei o dia todo
>>>> off)
>>>>
>>>> - Seguinte... acho q o negócio está na arqutetura. Tirar os repositorys
>>>> da entidades e injetá-los no services, daí seria possivel. Mas quebra
>>>> totalmente a forma q o Diogo já vem trabalhando, e possivelmente um
>>>> refactory seria pouco custoso.
>>>>
>>>> - Outra forma, seria como o Digows (aka Rodrigo) falou, criar um aspecto
>>>> para interceptar seu service e injetar o repository manualmente. Tb seria
>>>> custoso, mas é interessante, pq depois de feito o reaproveitamento disso
>>>> seria muito bom.
>>>>
>>>> - Depois q li vcs escreverem sobre ActiveRecord, pensei no Grails... mas
>>>> me falta bagagem pra falar dele. Mas como o George já comentou, aconselho a
>>>> darem uma olhada... realmente é muito bom e produtivo... mas... volta ao
>>>> problema de refatorar oq o Diogo já deve ter até hoje.
>>>>
>>>> Das tres, apostaria em duas coisas: Injete o repository no Service para
>>>> q seu projeto não pare. (tempo é dinheiro). Depois, investiria tempo em
>>>> implementar esse aspect. Ou, se vc tem tempo, comece a pesquisar e estudar
>>>> essa implementação desde já.
>>>>
>>>> Depois, para projetos q forem iniciar "do zero", dê uma olhada no
>>>> Grails... muito fácil e produtivo, principalmente para quem trabalha com
>>>> fábrica de softwares.
>>>>
>>>> Abraços e boa sorte. (discussão legal essa... gostei! =D)
>>>>
>>>>
>>>> --
>>>> Mário de Souza Júnior
>>>> Programador Java / Flex : AS3 / PHP
>>>> (44) 4009-3550 Maringá-PR
>>>> http://blog.mariojunior.com
>>>> [EMAIL PROTECTED] (gtalk, msn, etc..)
>>>>
>>>>
>>
>>
>> --
>> Atenciosamente:
>> -----------------------------------------------
>> | Rodrigo Pereira Fraga|
>> http://www.digows.com/
>> http://forum.flexbrasil.com.br/
>> -----------------------------------------------
>> >>
>>
--
Atenciosamente:
-----------------------------------------------
| Rodrigo Pereira Fraga|
http://www.digows.com/
http://forum.flexbrasil.com.br/
-----------------------------------------------
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---