August 24, 2008

(1) Comentário

Nos veremos no JustJava 2008

Rafael Carneiro

, , , ,

justjava_logo2.pngO envio do meu trabalho o qual submeti para o JustJava, foi aprovado. Agora, já está quase tudo pronto para a minha ida a São Paulo em setembro. A palestra será em dupla com meu parceiro Tarso Bessa (membro e palestrante do CEJUG). O assunto será Os melhores do mundo: um comparativo entre Spring e EJB 3.0.

Enviamos nosso trabalho para análise em junho e soubemos nessa semana que ele foi aceito. Será a primeira vez que participarei de um evento de âmbito nacional. Terei a oportunidade (finalmente) de conhecer os meus amigos do Portal Java e alguns amigos do GUJ, de listas de discussões e de outros meios (blogs, twitter, etc).

A grade deste ano está com diversos temas interessantes e alguns nomes que conheço, como: Paulo Silveira, Guilherme Chapiewski, Eduardo Guerra, Cláudio Miranda e Edgar Silva.

Espero encontrar muita gente boa do PortalJava e do GUJ para falar sobre Java. Não esqueçam de me convidar para os after hours. :)

Just Java 08, aí vamos nós!

Cartões para todos os gostos

Rafael Carneiro

, , ,

A REFCARDZ lançou um serviço muito bom de cartões. Ela simplesmente elabora cartões com dicas e configurações rápidas das principais tecnologias e ferramentas do mundo Java. Juliano Carniel já blogou sobre os cartões, mas recentemente a refcardz lançou um novo cartão: Dependency Injection in EJB 3.0.cartao-refcardz.jpg

Cartões disponíveis:

  • Windows PowerShell
  • Spring Configuration
  • Getting Started with Eclipse
  • Getting Started with Ajax
  • GWT Style, Configuration and JSNI Reference

Para obter os cartões basta fazer o cadastro no site da refcardz que você receberá um e-mail com o link para fazer o download dos cartões.

December 28, 2007

(2) Comentários

Parâmetros no EJB QL

Rafael Carneiro

, , , ,

Utilizando o objeto PreparedStatement do JDBC, você configura os parâmetros da sua consulta SQL da seguinte maneira:

PreparedStatement stmt = seuObjetoConnection.

            prepareStatement("select * from user where idade = ? and nome = ?");

stmt.setInt(1,idade);

stmt.setString(2,nome);

Existem duas maneiras de configurar parâmetros para consultas na EJB QL: identificados e posicionais.

Identificados

Query query = entityManager.

  createQuery("from User u where u.idade =:idade and u.nome =:nome");query.setParameter("idade",idade);

query.setParameter("nome",nome);

Posicionais

Query query = entityManager.

  createQuery("from User u where u.idade =?1 and u.nome =?2");query.setParameter(1,idade);

query.setParameter(2,nome);

As diferenças entre parâmetros identificados e posicionais:

  • identificados: :nome_Do_Parametro
  • posicionais: ?numero_Do_Parametro

November 8, 2007

(2) Comentários

Vídeos-aula de JSF

Emanoel Tadeu

, , ,

Aderindo a onda de desenvolvimento em JSF, o blog screencast publicou duas vídeos-aula sobre a utilização de JSF no eclipse europa em duas partes: a primeira, fala sobre como registrar a implementação no eclipse até rodar uma aplicação de exemplo. A segunda fala sobre como colocar JSF e EJB em sua aplicação JEE.

Primeiras impressões do Eclipse Europa

Rafael Carneiro

, , , ,

Hoje descompactei o Eclipse Europa para desenvolvedores JEE e fiquei muito satisfeito com essa nova versão. O WTP 2.0 foi lançado e já está disponível nessa versão. Possibilita a criação de vários projetos como: JPA, EJB, J2EE, Web Services e outros. E o melhor, já cria toda a estrutura de diretórios. Possui também auto-complete para as Annotations. A partir de amanhã já irei trabalhar utilizando o Eclipse Europa!

Links relacionados

Iniciando com JPA

Rafael Carneiro

, ,

JPA, acrônimo de Java Persistence API, que veio junto com o Java EE 5, trouxe diversas funcionalidades que ajudam e muito a vida dos desenvolvedores. A JPA faz parte da especificação EJB 3.0, porém à rumores de que na versão 6 do Java EE ela seja retirada dessa especificação.

A JPA é caracterizada em três áreas:

  • Java Persistence API
  • Query Language
  • Mapeamento Objeto/Relacional

Logo abaixo irei dar exemplos de como inserir uma entidade no banco de dados, utilizando as annotations do EJB 3.0, os objetos do JPA , o banco de dados MySQL 5.0 e o Oracle TopLink como provider.

Iremos precisar de algumas libs para este exemplo, no final do post tem um link para você baixar o exemplo completo, com as classes e as libs necessárias.

- Criando a entidade
Iremos criar a nossa classe de entidade chamada Usuario, que irá possuir os seguintes atributos: id, login, password e nome.
Ela nada mais é do que um simples POJO (Plain Old Java Ob
ject) com alguns atributos, métodos acessores e não herda de nenhuma classe. Em aplicações coorporativas que utilizam toda a especificação EJB é necessário que essas classes possuam mais características, como serialização por exemplo.

Vamos aos códigos:

Figura 1


Na linha 10 eu informo que esse objeto será uma entidade, marcando com a annotation @Entity.
Na linha 11 informo o nome da tabela, atráves da annotation @Table, usando o atributo name da mesma.

Já na linhas 14 e 15, indico que este atributo será um id (marcado com a annotation @Id) e que a sua estratégia de geração de valores no banco será IDENTITY (para o Oracle usa-se SEQUENCE).
Os demais atributos são marcados com @Column, porém não é necessário fazê-lo, a menos que você quizesse utilizar alguns dos atributos dessa annotation, como name, que indica qual vai ser o nome da coluna no banco.

- Criando a classe UsuarioDAO para persistência

Como este post é apenas um exemplo simples de persistência utilizando JPA, criei apenas uma classe DAO (padrão de projeto Data Access Object) que contém o código principal para a persistência.

Figura 2

Na linha 18 eu crio meu objeto factory, recebendo a instância do provider, que irá encontrar o nome do persistence-unit no arquivo persistence.xml.

Em seguinda, na linha 19 eu crio o objeto EntityManager, que é o principal objeto para a persistência na JPA.

O método inserirUsuario utiliza o objeto EntityTransaction, para transações.

Na linha 35 o objeto eu chamo o método persist do objeto EntityManager, passando a entidade para ser gravada no banco.

Existem vários outros métodos relacionados a persistência, como o find, delete, merge e outros. Aconselho dar uma lida na especificação para conhecer estes métodos, quais seus propósitos e suas funcionalidades.

- Arquivo de configuração (persistence.xml)

Esse é o arquivo de configuração, que configura o nome da unidade de persistência, o tipo de transação, as configurações de banco, o provider, as classes de entidades e etc.

Figura 3

Atenção para a linha 15, essa propriedade informa o tipo de geração das tabelas do banco. Na primeira vez que você rodar o exemplo, o provider irá criar as tabelas no schema exemplojpa.

Se você tentar rodar novamente o exemplo sem comentar ou tirar essa linha, irá gerar um erro informando que já existe uma tabela criada no banco, mas os dados irão ser persistidos. Então ao rodar a primeira vez, comente essa linha ou troque o tipo de geração.

Abaixo você poderá fazer o download do exemplo, com as classes, as libs e o persistence.xml (arquivo de configuração).

Este exemplo foi bastante simples e a JPA é bastante vasta, portanto baixe as especificações e estude mais afundo sobre esse excelente meio de persistência!

Download do exemplo
Screencast excelente sobre JPA