ago

6

Java + FLEX Parte 3 -> Spring BlazeDS Integration + dpHibernate

By Felipe Saab

Neste post iremos ver como obter ainda mais produtividade no desenvolvimento de aplicações Java + FLEX adicionando o framework dpHibernate ao nosso projeto da Agenda, que foi criado na Parte 1 e melhorado na Parte 2 dessa série.

Para utilizarmos o dpHibernate com todo o seu potencial precisaremos melhorar um pouco mais a nossa agenda pois até agora temos apenas uma entidade no projeto: o Contato. Iremos adicionar a entidade Pessoa, sendo assim, Contato passará a ser uma entidade filha de Pessoa. Em outras palavras: uma Pessoa poderá ter nenhum ou muitos Contatos.

Mas vamos a um pouco de teoria antes (caso você já conheça o dpHibernate pode pular para a parte onde a ação começa a acontecer hehehe):

O QUE É dpHibernate?

De acordo com o site do projeto:

dpHibernate is a custom Flex Library and a custom BlazeDS Hibernate adapter that work together to give you support for lazy loading of hibernate objects from inside your flex applications.

dpHibernate é uma biblioteca para projetos Flex e um adaptador customizado do BlazeDS com suporte para o Hibernate que trabalham juntos para proporcionar suporte a lazy loading de objetos hibernate a partir da sua aplicação flex.

Quer dizer, o dpHibernate é composto por dois projetos: uma biblioteca que será referenciada no projeto FLEX (um arquivo .swc) e outra biblioteca que vai ser referenciada no projeto Java (arquivo .jar) que vão proporcionar o lazy loading de objetos do hibernate a partir da sua aplicação FLEX!!

Vamos facilitar ainda mais com um exemplo: :D

Vamos pensar nas entidades que vamos utilizar daqui a pouco: Pessoa e Contato.

Na classe Pessoa nós vamos ter uma lista de Contato:

public class Pessoa {
 
    // Outros atributos
 
    @OneToMany(fetch=FetchType.LAZY, ...)
    private List contatos;
 
    // Getters e setters
 
}

Se antes de enviarmos uma Pessoa do Java para o FLEX não executarmos o método getContatos() do objeto Pessoa a lista não será inicializada pois está marcada para ser carregada preguiçosamente (FetchType.LAZY), e consequentemente não será enviada para o FLEX.

OBS: isso acontece porque estamos utilizando o Spring BlazeDS Integration no nosso projeto, e ele possui essa funcionalidade, somente listas inicializadas são enviadas para o FLEX.

Mas o que acontece caso eu queira a lista de contatos no FLEX? Ou inicializamos a lista antes de enviar o objeto para o FLEX, ou seja, executar o getter da lista, ou então quando precisarmos da lista no FLEX nós fazemos mais uma chamada remota para carregar a lista.

Pensando em performance o correto é carregar a lista somente quando realmente precisarmos dela, quando abrir a tela dos contatos por exemplo.

E é exatamente esta a função do dpHibernate! A primeira vez que uma lista for acessada (na aplicação FLEX) o dpHibernate vai verificar se essa lista já foi carregada ou não e caso ela não tenha sido ele irá se encarregar de fazer uma chamada remota para carregá-la. Tudo isso de uma maneira completamente transparente para o programador! :D

Agora que já sabemos como o dpHibernate funciona vamos preparar a nossa agenda adicionando a entidade Pessoa.

Read more »

jun

23

Java + FLEX Parte 2 -> Spring BlazeDS Integration + Hibernate

By Felipe Saab

Fala pessoal, finalmente a parte 2 do tutorial da nossa integração Java + FLEX! :D

CONSIDERAÇÕES INICIAIS

Caso você não tenha visto a Parte 1 do tutorial, por favor, veja ou baixe a aplicação pois a refatoração será feita em cima do projeto desenvolvido no tutorial anterior.

INTRODUÇÃO

Até agora o que temos é uma aplicação com o objetivo de ser uma Agenda de Contatos, porém os contatos estão ficando apenas em memória (uma lista estática na classe ContatoService.java), ao parar o servidor e rodá-lo novamente os contatos anteriormente salvos sumiram.. Ok, para evitar isso vamos persistir os contatos em um banco de dados, e para facilitar ainda mais a nossa vida vamos utilizar o Hibernate para nem nos preocuparmos com SQL, mecher apenas com as classes.

OBS: Por favor não me entenda errado, saber SQL é extremamente importante!! Mesmo utilizando o Hibernate as vezes precisamos construir querys utilizando HQL ou mesmo SQL, mas como nossa aplicação é extremamente simples nós podemos deixar isso de lado e utilizar todas as facilidades que o Hibernate provê.

E tem também o Spring! :D Ele nos será útil por dois fatores:

Injeção de Dependência: vamos utilizar interfaces e anotações para o Spring injetar os beans que precisamos em cada classe. Por consequência melhorar muito o projeto (design) da nossa aplicação pois as classes ficarão desacopladas (pois utilizaremos as interfaces). Conforme formos escrevendo o código isso ficará mais claro. ;)

Integração com o BlazeDS: vamos utilizar um framework que a SpringSource criou para a integração do Spring com o BlazeDS para não precisarmos de muitas configurações e para termos possibilidade de aproveitar todas as funcionalidades do Spring como segurança e mensagens por exemplo. Para entender melhor sobre este projeto recomendo a leitura da referência [1].

Vamos fazer as coisas por partes então: primeiro vamos adicionar o Spring ao nosso projeto e depois adicionaremos o Hibernate pois ele vai ser um bean gerenciado pelo Spring também.

Read more »

abr

22

Java + FLEX Parte 1 -> Integrando Java e FLEX

By Felipe Saab

Hoje iremos abordar uma integração (que eu particularmente acho) fantástica: Java e FLEX (cuja versão mais atual se chama Flash Builder 4).

A primeira grande (super, ultra, …) vantagem que me vem na cabeça quando falo deste assunto é a facilidade para criar belas interfaces. Eu sou uma negação quando o assunto é criar interfaces, design me dá arrepios…

Outro ponto que é um grande vantagem é que toda a interface roda em cima do Flash, ou seja, basta ter o flash instalado no navegador e é certeza que o programa vai abrir exatamente do jeito que você o projetou! Não dá pau de navegador pra navegador!!!! Quem meche com CSS sabe do que eu estou falando, tua página está perfeita no Firefox e quando abre ela no IE dá até medo. Hahahaha quem nunca passou por isso que atire a primeira pedra.

Enfim, veremos como é possível ter uma interface fácil de desenvolver e ao mesmo tempo amigável para o usuário final com um backend poderosíssimo rodando o nosso bom e (não tão) velho Java e todos os frameworks que estamos acostumados a usar, como Spring e Hibernate.

Read more »