Jan 08 2007

.NET: Cinco dicas sobre o NHibernate

Autor: Marcos Dell Antonio - Categorias: .NET

Depois de um ano batendo a cabeça contra o teclado para aprender a usar o NHibernate, sinto-me na obrigação de alertar/ajudar aos usuários sobre alguns detalhes que às vezes te deixam de cabelo em pé (ou sem cabelo, tanto faz, o chefe enchendo o saco será o mesmo).

1. Nunca, em hipótese alguma, use chaves primárias compostas

Eu fui obrigado a utilizar o NHibernate com tabelas que possuíam chaves primárias (PKs) compostas. Primeiramente, essa é uma péssima opção de design. Não acha? Então me responda: qual é o papel das PKs? No meu ponto de vista, e de outros “zilhões” de desenvolvedores do século 21, a PK serve unicamente para identificar uma linha de uma determinada tabela. É isso! Ponto final. Nada de querer facilitar a visualização de relacionamentos (cliente com seus contatos, por exemplo).

Enfie isso na sua cabeça e faça de conta que aprendeu com o tempo:

Chave primária = um e somente um campo chamado ID do tipo inteiro

O NHibernate teoricamente suporta o mapeamento de chaves compostas. Claro, na teoria é lindo. Na prática é um desespero. A sintaxe muda, a documentação é precária e até mesmo os próprios autores do best-seller no assunto, Hibernate In Action (é uma ótima referência ao NH, apesar de ser escrito baseado no irmão mais velho), não recomendam as PKs compostas.

2. Não use campos do tipo TIME

Por algum motivo cientificamente explicável, o NH não implementa suporte nativo aos campos TIME. Em outras palavras, isso significa que se você tiver um campo deste tipo na base de dados, terá que fazer uma implementação extra/proprietária para tratá-lo.

A solução é um tanto quanto simples, porém obscura. A documentação sobre este assunto é precária e o melhor de tudo: eu tinha uma implementação pra resolver esse problema… assim que fiz um update para a última versão do NH ela parou de funcionar! Maravilha, heim? Removeram umas classes que eu utilizava. Tudo bem que eram classes beta, mas estavam lá para qualquer abelhudo desesperado sair usando.

3. Curva de aprendizado gigante

Se você pensa que vai sair mapeando tabelas através de arquivos XML e classes C# e logo depois criar seu sistema e distribuí-lo, esqueça. Talvez esse não seja um ponto tão negativo quanto aparenta, pois a complexidade do NH faz com que os desenvolvedores tirem a bunda da cadeira e comecem a estudar padrões de projeto, gerenciamento de sessão e tudo o que há de melhores práticas para projetar e desenvolver um software.

Com o NH fui forçado a aprender técnicas de mapeamento objeto/relacional (O/R), alguns patterns do GoF e vários recursos do .NET. Tudo isso, sem dúvida alguma, refletiu em um crescimento intelectual/financeiro no que diz respeito à minha profissão.

4. Query By Example ignora a chave primária

Query By Example (QBE) é um recurso muito interessante dos frameworks de persistência de objetos. Basicamente funciona assim: você instancia um objeto, carrega algumas propriedades e pede para o framework retornar todos os registros de acordo com o informado. O SQL gerado trará na sua clausula WHERE as restrições de acordo as propriedades carregadas no objeto.

Ponto negativo: o NH não considera os campos da chave primária. Mais uma vez a composite-id, ou seja, chave primária composta, ferra com a nossa vida. Sem ela,  não é preciso usar QBE com campos da PK, afinal se a PK só tem um campo e você conhece ele, não tem motivo para informar outros. Com ela a coisa complica. Imagine o seguinte: cadastro de Clientes e Contatos, sendo que a tabela de Contatos possui sua chave primária formada pelos campos CodigoCliente e CodigoContato. Se eu quiser saber quais contatos de um determinado cliente são de Santa Catarina? O que fazer?

1 Contato c = new Contato(); 2 c.CodigoCliente = 1; 3 c.Estado = "SC";

Uma QBE usando o objeto do exemplo acima não iria considerar o valor da propriedade CodigoCliente. E aí, como fico? Não dá pra buscar todos os contatos de um cliente que moram em SC?

Para resolver esse “problema” (na realidade, como comentado anteriormente, é um problema de design) usa-se HQL, onde a query será montada manualmente incluindo as propriedades necessárias.

5. Os hermanos têm as respostas

É a realidade: o NHibernate não possui uma documentação sequer boa. A única solução para garantir a sobrevivência é pegando algumas idéias da comunidade Java, afinal eles estão anos luz à nossa frente quando o tema é persistência objeto/relacional.

O site JEEBrasil é uma excelente fonte de artigos sobre o Hibernate. E já que os dois frameworks são irmãozinhos (dizem que o NH nasceu superior, pois já conhece os erros do Hibernate e por isso não comete os mesmos - isso não reflete a minha opinião), por que não utilizar a documentação do outro? Vale a pena.

É isso aí. Apesar dessas considerações, continuo usando ele em projetos pessoais e profissionais. Depois que entra no ritmo, a produtividade cresce muito. Portanto, se você tem trauma dos DataSets que a Microsoft criou para resolver seus problemas (uh mau gosto heim), eis uma possível alternativa.

Espero que isso ajude alguém que esteja pensando em usar o NHibernate.

Até +.

Comentários 14 comentários

Jan 07 2007

Adicionando um formulário de contato ao WordPress

Autor: Marcos Dell Antonio - Categorias: Blogging

Depois que li um post no Efetividade.net sobre os plugins que o Augusto usa no blog, resolvi usar um deles: WP-ContactForm.

Como meu blog ainda não tinha uma forma de estabelecer contato entre leitor/autor, esse plugin resolveu meu problema. O resultado final pode ser visto aqui.

A instalação do plugin é simples e está descrita aqui. Até o item três não tem segredo. No entanto, como sou um usuário novo desses gerenciadores de blog, não compreendi facilmente o item quatro. Logo, fica aí a dica: crie uma página através do painel de controle do Wordpress acessando a opção Write e depois Write Page. Dentro da janela que abriu, abaixo do campo para informar o título, existe uma lista de botões, sendo que o último deles (Insert Contact Form) deve ser clicado para adicionar o formulário de contato nesta nova página.

Pronto! Página criada, agora basta adicioná-la ao blog (o link completo pode ser visto na opção Manage / Pages / View).

É isso aí, até +!

Comentários 5 comentários

Jan 07 2007

Contato

Autor: Marcos Dell Antonio - Categorias: Uncategorized

(required)
(required)

 

Comentários Faça o seu comentário

Jan 07 2007

Dica rápida: WordPress + Acentuação

Autor: Marcos Dell Antonio - Categorias: Blogging

Se você inseriu algum texto acentuado em um arquivo php do WordPress e na hora de visualizá-lo os caracteres com acento aparecem desconfigurados, use a função htmlentities.

Exemplo:

<?php echo htmlentities(”Isso é um teste”); ?>

Até +.

Comentários 3 comentários

Jan 07 2007

Trecho interessante do livro Quando Nietzsche Chorou

Autor: Marcos Dell Antonio - Categorias: Livros

Como postei anteriormente, estou lendo o livro Quanto Nietzsche Chorou. No capítulo 3, página 46, encontrei o seguinte trecho:

Com mais algumas perguntas, Breuer teve certeza da causa do problema do senhor Perlroth. A glândula prostática do paciente devia estar obstruindo a uretra. Restava uma única questão importante: o senhor Perlroth tinha um alargamento benigno da próstata ou um câncer? No exame do reto, Breuer não sentiu nenhum nódulo canceroso endurecido, encontrando em seu lugar um alargamento esponjoso e benigno.

Ok, até aqui é um pouco nojento (ah, vai dizer que não?), mas é suportável, afinal faz parte do ciclo de vida (nascer, crescer, fazer exame de próstata e morrer). No entanto, veja o início do próximo parágrafo:

Depois de ouvir que não havia indício de câncer, o senhor Perlroth irrompeu em um sorriso jubiloso, apanhou a mão de Breuer e a beijou.

Agora eu me pergunto: será que o doutor Breuer lavou a mão depois do exame? Argh!

Acho que o escritor (ou talvez o tradutor) poderia ter sido mais cauteloso para evitar uma interpretação deste tipo. Mas quem sou eu pra achar isso!

No mais, é um excelente livro que nas entrelinhas fala sobre a filosofia de Nietzsche e o nascimento da psicanálise.

Até +!

Comentários Faça o seu comentário

Jan 06 2007

2.292 visitas em dezembro!

Autor: Marcos Dell Antonio - Categorias: Blogging

Desde que este blog foi lançado, o número de visitas vem crescendo consideravelmente todo mês. Claro, crescer 10, 20 ou 30% é ótimo, mas saltar de 484 para 2.292 visitas é excelente.

Abaixo algumas estatísticas do blog após oito meses de funcionamento:

  • Junho/2006: 16 visitas
  • Julho/2006: 124 visitas
  • Agosto/2006: 222 visitas
  • Setembro/2006: 304 visitas
  • Outubro/2006: 707 visitas
  • Novembro/2006: 484 visitas
  • Dezembro/2006: 2.292 visitas

Além disso, nos cinco primeiros dias do mês de Janeiro o número de visitas já ultrapassa 800. Seguindo esse padrão, provavelmente chegaremos a 4.000 neste mês. Uou! :)

Não sei quanto a vocês, mas eu acho esses número excelentes, pois esse blog é simplesmente uma forma de registrar o que faço e penso sobre alguns assuntos. Não é nada profissional quando comparado ao MeioBit, Contraditorium, Revolução, etc.

Agradeço a todos que estão acompanhando este trabalho. Obrigado.

Comentários Faça o seu comentário

Jan 06 2007

Livro: Quando Nietzsche Chorou, Irvin D. Yalom

Autor: Marcos Dell Antonio - Categorias: Livros

Voltei das férias hoje e sobre a minha mesa estava a mais nova aquisição: Quando Nietzsche Chorou, de Irvin D. Yalom.

Veja a resenha:

Esta é uma envolvente mescla de fato e ficção, um drama de amor, fé e vontade tendo por pano de fundo o fermento intelectual da Viena do século XIX às vésperas do nascimento da psicanálise. Friedrich Nietzsche, o maior filósofo da Europa… Josef Breuer, um dos pais da psicanálise… um pacto secreto… um jovem médico interno de hospital chamado Sigmund Freud: esses elementos se combinam para criar a saga inesquecível de um relacionamento imaginário entre um extraordinário paciente e um terapeuta talentoso. Na abertura deste romance irresistível, a inatingível Lou Salomé roga a Breuer que ajude a tratar o desespero suicida de Nietzsche mediante sua experimental terapia através da conversa. Ao aceitar relutante a tarefa, o eminente médico realiza uma grande descoberta: somente encarando seus próprios demônios internos poderá começar a ajudar seu paciente. Assim, dois homens brilhantes e enigmáticos mergulham nas profundezas de suas próprias obsessões românticas e descobrem o poder redentor da amizade.

Quando Nietzsche Chorou
Compre agora na Submarino

Em maio do ano passado (2006, só pra não haver confusão), foi lançada uma versão desta obra no teatro. A Folha tem mais detalhes:

O best-seller “Quando Nietzsche Chorou” ganhou versão para o teatro e sua estréia é nesta quinta (6) no Teatro Imprensa. O espetáculo tem no elenco Cássio Scapin (Friedrich Nietzsche), Nelson Baskerville (Josef Breuer), Lígia Cortez (Mathilde) e Flávio Tolezani (Freud). Além de uma participação especial em vídeo de Ana Paula Arósio (Lou Salomé).

Esse Cássio Scapin é o famoso Nino do Castelo Rá-Tim-Bum. Ele participou de uma entrevista no programa do Jô e falou sobre a obra. O cara parece ser fera!

Assim que acabar de ler faço um comentário sobre ele.

É isso aí! Até +.

Comentários Faça o seu comentário

Jan 06 2007

Novos horizontes

Autor: Marcos Dell Antonio - Categorias: Cotidiano

Após as férias e a chegada do ano novo é sempre interessante repensar algumas coisas.

Algo que tenho refletido muito ultimamente é a possibilidade de ingressar em algum cargo público. Motivo? Não, não sou vagabundo (desculpem os funcionários públicos que não se encaixam nessa categoria), só quero estabilidade.

Não vou dizer, tal como fez um colega meu, que esta área (computação) já deu pra bola. Mas vai dar, disso não tenho dúvidas.

Por essas e outras razões andei fazendo uma busca por alguns concursos públicos. Gostaria de compartilhar três ótimos serviços que utilizei:

Os dois primeiros são novos para mim e encontrei ao acaso usando o Google. O CorreioWeb separa os concursos pelas cinco regiões do Brasil e também possui um lista de futuras atividades/vagas.

Tendo em vista que há alguns meses ando lendo sobre história, filosofia e outros temas variados, também cogito a possibilidade de tentar algo em outra área. O ideal seria estar preparado para se tornar um Diplomata, mas ainda não falo nem Espanhol e muito menos Francês. No entanto, acho válido ficar de olho nestas oportunidades e ajustar as leituras de final de semana de acordo com o cargo desejado.

Falando especificamente sobre concursos na área de computação, percebi que praticamente todos eles exigem conhecimentos na plataforma Java e seus derivados e acompanhantes (frameworks, metodologias, ferramentas, etc). Não acho que isso seja um empecilho muito grande pra mim, pois apesar de trabalhar com .NET e Delphi, utilizo alguns frameworks que são baseados em versões Java (NHibernate, NUnit, etc) e procuro aplicar, quando necessário, os padrões e técnicas de orientação a objetos, que não são específicos a uma só linguagem.

Desta forma, fica aí uma atualização no planejamento para 2007: avaliar a possibilidade de realizar algum concurso público.

É isso aí. Até +!

Comentários Faça o seu comentário

« Página anterior