Arquivo da categoria 'Cursos'

Aplicação de exemplo usando Eclipse, JPA Tools, JBoss (Aula 3)

Diego Raphael Pedroza Santiviago - 24 de Maio de 2008 às 17:17

Olá queridos leitores, (Aula 1 e 2 no final do post)

Desculpe pela demora em postar a terceira parte da aplicação de exemplo, mas fica uma recomendação:

- Sempre que ler um post, deixe um comentário, se está gostando ou não do post. Assim o escritor fica mais animado e sabe que existem pessoas lendo!

Bom, vamos lá..

Crie a classe UserSessionFacadeImpl, que será a implementação da façade que atuará como EJB do tipo Stateless SessionBean.

Indique que a classe é um Stateless Session Bean através da notação @Stateless

 

Crie a propriedade:

private EntityManager entityManager;

Importe-a de javax.persistence.
Anote-a com a anotação @PersistenceContext(unitName=”UserJPA”)
Isso fará com que a unidade de persistência seja injetada na instância do SessionBean.

O nome UserJPA está declarado em META-INF/persistence.xml

No método create, que será implementado, coloque o seguinte código:

public void create(User user) {
entityManager.persist(user);
}

Isto irá persistir o usuário recém-criado.

No método findAllDepartments, faça o seguinte:

@SuppressWarnings(”unchecked”)
public List findAllDepartments() {
return entityManager.createQuery(”from Department d”).getResultList();
}

A notação @SuppressWarnings é para que não tenhamos warnings desnecessários.

Finalizamos a criação JPA do projeto e EJB3.

Criaremos agora a camada WEB que fará uso de JPA e EJB3.
Para isso, crie um projeto Dynamic Web Project.

Em project name coloque UserWAR, em configurations coloque JSF v1.2 Project
Marque a opção Add project to an EAR, clique em next, clique em next novamente até a parte que apareça como título JSF Capabilities, e marque a opção Server Supplied JSF Implementation. Lá em baixo, em URL Mapping Patterns, clique em ADD, e adicione “*.jsf”, clique em finish. O projeto WEB será criado.

Criaremos agora o bean do JSF que receberá as requisições de nossas páginas. O primeiro passo será setar a dependencia do projeto WEB com o projeto JPA. Clique com o botão direito no projeto WEB, vá em Properties, vá em J2EE Module Dependencies e selecione UserJPA. Clique em Apply.

Vamos criar uma classe no projeto web. Em package, coloque com.ttwiter.user.form. Em name, digite: UserForm, clique em finish.

Crie a propriedade:

@EJB(name="UserEAR/UserSessionFacadeImpl/local")
private UserSessionFacade userSessionFacade;

A String “UserEAR/UserSessionFacadeImpl/local” é o endereço JNDI o qual o EJB está publicado no JBoss.

Crie a propriedade:

private User user = new User();

Gere os getters/setters para user.

Criaremos agora o método getDepartments que retornará a lista de departamentos cadastrados.

public SelectItem[] getDepartments() {
List<Department> departments = userSessionFacade.findAllDepartments();
List<SelectItem> items = new ArrayList<SelectItem>(departments.size());

for(Department department : departments) {
items.add(new SelectItem(department.getId(), department.getName()));
}

return items.toArray(new SelectItem[items.size()]);
}

Criaremos agora o método create, que será responsável por inserir na base.

public String create() {
try {
userSessionFacade.create(user);
FacesContext.getCurrentInstance().addMessage("", new FacesMessage("Success"));
} catch (Exception e) {
e.printStackTrace();
FacesMessage message = new FacesMessage(e.getMessage());
message.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage("", message);
}

return null;
}

Abra o arquivo WEB-INF/faces-config.xml, clique na Aba ManagedBean que fica na parte inferior, clique em Request, add, coloque com.ttwiter.user.form.UserForm e finalize a criação do ManagedBean.

Bom, esta é a terceira parte, se alguém encontrar algum erro por favor reporte! E como eu disse no começo, se estiver acompanhando avise!

Aula 2
Aula 1

Aplicação de exemplo usando Eclipse, JPA Tools, JBoss (Aula 2)

Diego Raphael Pedroza Santiviago - 25 de Fevereiro de 2008 às 10:49

Nessa segunda parte, continuarems desenvolvendo a aplicação baseada em JPA e EJB 3.

Precisamos criar o Data Source utilizado pelo Eclipse no momento da criação do projeto JPA. Clique na aba “Data Source Explorer”, clique com o botão direito em “Databases”, “New”, “Generic JDBC Connection. Em name, digite “MySQL”, marque a opção Auto-connect at startup. Clique em “Next”.

Chegou a hora de escolher o driver. Clique no botão “…” para adicionar um novo driver. Escolha MySQL 5.1. Abrirá uma edição da definição do driver. Remova o arquivo atual, clicando no driver que já existe e adicione o driver que fizemos o download (Aquele unico JAR que está dentro do arquivo baixado.

Altere:

“Connection URL” para jdbc:mysql://localhost:3306/user”
“Database” para root

Clique em “OK”, em “Test Connection” para verificar se está tudo ok. Se der algum problema, algo está errado nos passos seguidos!

Verifique a database “root” para ver se as tabelas estão ali.

Vamos agora criar nosso projeto JPA. Clique com o botão direito na aba explorer, “New”, “Other”. Crie um JPA Project. No nome use “UserJPA”. Em “Configurations” certifique-se que está “Default Configuration for JBoss v4.2″. Marque a opção “Add project to an EAR” e escolha “UserEAR”

Clique em “Next”, “Next” novamente, desmarque a opção “Create orm.xml”, clique em Finish!

Vai perguntar aqueles negócios de perspectiva! Marque sim, e remember minha decisão! hahahha

Vamos começar a criar as classes. Clique com o botão direito em “src”. Em package, digite “com.ttwiter.user” e como nome de classe, Department.

Indique que a classe implementa a interface java.io.Serializable. Clique no warning apresentado, e marque a opção “Add default serial version ID”

Agora vamos a marotagem do plugin do eclipse para JPA. Clique em cima do nome Department (classe) selecionando-o e após, em “Map as” na aba “JPA Details ao seu canto inferior direito (estando na perspectiva JPA e escolha Map as: Entity. Isso adicionará a notation em cima da classe.

Crie as seguintes propriedades:

private Long id;
private String name;

Vamos consertar os erros na notation entity. Isso é causado porque fala que a classe não possui um Id. Para resolver a situação, clique em cima da proprierdade “id”, e selecione Map as id. Salve a classe, o erro deverá desaparecer.

Gere os setters/getters, não esquecendo de marcá-los como “final”, afinal, você não quer que uma classe filha sobrescreva seus métodos get/set, ou quer? Evil and Twisted

O código ficou assim:

@Entity
public class Department implements Serializable {

private static final long serialVersionUID = 1L;

@Id
private Long id;
private String name;

//Com seus devidos get/set e imports.

Crie a classe User, vai ser quase o mesmo procedimento, mas com umas marotagens a mais.

Indique que a classe implementa a interface Serializable, conserte o warning adicionando um serial version UID.

Clique sobre a classe User, e indique Map as Entity.

Crie as propriedades:

private Long id;
private String name;
private String email;
private String password;

private Department department = new Department();

Como você pode verificar, temos 2 erros. Um alertando que não temos um “id” e outro em cima da declaração de Department. Mapeie a propriedade id, e insira mais uma marotagem!

Adicione a notation @GeneratedValue para indicar que o valor de id é gerado, e dentro coloque (strategy=GenerationType.IDENTITY). Ou seja, ficará assim :

@GeneratedValue(strategy=GenerationType.IDENTITY)

Não coloque “;” no final!

O erro de Department ocorre porque a coluna department nao está sendo encontrada! A verdade é que precisamos mapear essa propriedade como “Muitos para um”. Para isso, clique em cima da propriedade department, e em Map as escolha “Many to One”, após isso, o erro deverá ser corrigido.

Gere os getters/setters menos para serialVersionUID.

Criaremos agora o Façade para representar nossa lógica de negócios dentro da aplicação.

Cria uma interface com o nome de UserSessionFacade, no pacote “com.ttwiter.user.service”. Essa interface se transformará em nossa interface de EJB. Para isso, insira a notação @Local.

Insira o método:

public List<Department> findAllDepartments();

public void create ( User user );

Bom, nesta aula continuamos contruindo a aplicação no Eclipse 3.3 utilizando JPA Tools.

Qualquer erro, reporte-nos!
Até a próxima.

Abraços!

Aula 3
Aula 1

Aplicação de exemplo usando Eclipse, JPA Tools, JBoss (Aula 1)

Diego Raphael Pedroza Santiviago - 23 de Fevereiro de 2008 às 17:40

Olá,

Sou Diego Raphael P. Santiviago e começa aqui uma série de aulas sobre determinadas tecnologias para você, leitor do TTwiter que não tem vergonha de interagir com a gente! (Existem pessoas que visitam, lêem e saem por aí beneficiados e nem ao menos dão um alôzinho pro escritor, e o pior, falam mal!).

Neste tópico, veremos como desenvolver uma aplicação usando Eclipse 3.3 e JPA Tools baseado no plugin Dalli! A partir disso construiremos uma aplicação utilizando JPA e EJB 3 e nos beneficiaremos dos recursos do JPA Tools!

Nesta primeira parte, passarei o link das ferramentas e iniciaremos a construção da aplicação.

1º passo:

Baixar o Eclipse IDE for Java EE Developers. ( Windows ) ( Linux ). Descompacte em uma pasta de sua preferência.

2º passo:

Baixar o JBoss! Eu recomendo a versão 4.2.2 pois já aceita Java 5 e é a última versão estável. ( Link ). Descompacte em alguma pasta de sua preferência.

3º passo:

Baixar o driver de conexão com o MySQL. ( Link ). Descompacte em alguma pasta de sua preferência e copie o único jar que está dentro desta pasta, no caso deste arquivo é mysql-connector-java-5.1.5-bin.jar dentro do servidor do JBoss na pasta /server/default/lib. Isto disponibilizá o driver do MySQL dentro do JBoss.

4º passo:

No Eclipse, clique com o botão direito na aba Project Explorer / New / Enterprise Application Project (verifique a perspectiva se está em Java EE).

Nomeie o projeto como UserEAR. Em Target Runtimes clique em New / JBoss / JBoss 4.2. E clique em next. Agora clique em Browse, e selecione a pasta onde você instalou o JBoss. Clique em Ok / Next / Finish. A configuração do JBoss será selecionada automaticamente. Clique em Next. Selecione a opção “Generate Deployment Descriptor”, clique em Finish.

Ufa.. Vamos lá.

O projeto EAR será criado contendo o deployment descriptor application.xml.

Precisamos agora criar a base de dados e as tabelas. Entre no mysql e digite os comandos.

CREATE DATABASE user;

use user;

create table department(

id integer primary key auto_increment,

name varchar(255) not null)

Engine=InnoDB;

CREATE TABLE user(

id integer primary key auto_increment,

name varchar(255) not null,

password varchar(255) not null,

email varchar(255) not null,

department_id integer not null,

foreign key(department_id) references department(id))

engine=InnoDB; 

Bom, utilizamos InnoDB para garantirmos as transações.

Department_id é uma coluna que é referenciada pela ID do departamento do usuário!.

Bom, para a primeira aula, está bom. (Ou não?). Espero que acompanhem, acredito terminar em 3 aulas e espero que tenham gostado até agora (Mas não fizemos nada porra).

Aula 2
Aula 3