Estou tendo exatamente esta necessidade neste exato momento e não estou encontrando um tutorial simples e didático o suficiente para configurar meu projeto com tais tecnologias de forma rápida e fácil, sendo assim, vou "mastigar" os trechos de tutoriais que encontrei por aí e vou colocar aqui pra você o que absorvi em forma de um SIMPLES passo-a-passo! Vamos lá?
1) Você primeiramente precisará ter o MySql e seu Connector instalado em sua máquina (ou qualquer outro Banco de Dados que queira utilizar).
Clique aqui para baixar o MySQL e depois o instale (Next, Next, Next... rsrsrs porém guarde a senha que você irá fornecer durante a instalação. Iremos precisar dela);
Clique aqui para baixar o MySQL Connector/J e depois o instale (Next, Next, Next... rsrsrsrs).
Clique aqui para baixar o arquivo ".jar" referente ao conector. Usaremos ele mais adiante.
2) Depois de baixar e instalar as ferramentas de Banco de Dados agora precisamos das bibliotecas do Hibernate e do JPA (já vêm inclusas dentro do Hibernate).
Clique aqui para baixar o Hibernate ORM (Model de Objeto Relacional).
3) Você precisará também do Servidor de Aplicação JBoss 7. Baixe e descompacte a versão "JBoss AS 7.1.1.Final".
4) Iremos considerar que você já tem um projeto WEB e quer apenas configurar/adicionar tais tecnologias, PORÉM, se você está criando um projeto também neste exato momento, pode acessar este nosso tutorial onde criamos um projeto WEB do zero para criar seu projeto e depois siga pra o passo 5) deste tutorial. Clique aqui para acessar o tutorial.
5) Descompacte e abra a pasta do Hibernate que você baixou e copie os arquivos ".jar" da pasta "hibernate-release-4.3.6.Final/lib/required" para a pasta "WebContent/WEB-INF/lib" (se esta pasta não existir, crie-a!). Feito isso, clique com o botão direito do mouse em cima do seu projeto, posicione sobre "Build Path" e selecione "Configure Build Path...":
Clique em "Add JARs...", selecione os arquivos que você copiou para a pasta "WebContent/WEB-INF/lib" e clique em "OK":
Clique em "OK".
6) Dentro do diretório do JBoss AS 7 que baixamos anteriormente, na pasta "/modules/com/" crie uma pasta chamada "mysql" e dentro desta pasta crie uma outra chamada "main". Seguindo essa estrutura, dentro da pasta "/modules/com/mysql/main/" crie um arquivo XML chamado "module.xml" com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.15-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
Salve o arquivo e dentro da mesma pasta coloque o "mysql-connector-java-5.1.15-bin.jar" que baixamos anteriormente. Note que o arquivo é referenciado no XML acima então o mesmo deve conter exatamente este nome, ou então você pode alterar o XML acima com o nome do arquivo que foi baixado.
7) Abra o arquivo "module.xml" localizado dentro da pasta do JBoss AS 7 no caminho "modules/org/hibernate/main" e adicione dentro da sessão de <dependencies> o seguinte trecho:
<module name="com.mysql"/>
O arquivo ficará assim:
<module xmlns="urn:jboss:module:1.1" name="org.hibernate">
<resources>
<resource-root path="hibernate-core-4.0.1.Final.jar"/>
<resource-root path="hibernate-commons-annotations-4.0.1.Final.jar"/>
<resource-root path="hibernate-entitymanager-4.0.1.Final.jar"/>
<resource-root path="hibernate-infinispan-4.0.1.Final.jar"/>
</resources>
<dependencies>
<module name="com.mysql"/>
<module name="asm.asm"/>
<module name="javax.api"/>
<module name="javax.persistence.api"/>
<module name="javax.transaction.api"/>
<module name="javax.validation.api"/>
<module name="org.antlr"/>
<module name="org.apache.commons.collections"/>
<module name="org.dom4j"/>
<module name="org.infinispan" optional="true"/>
<module name="org.javassist"/>
<module name="org.jboss.as.jpa.hibernate" slot="4" optional="true"/>
<module name="org.jboss.logging"/>
<module name="org.hibernate.envers" services="import" optional="true"/>
</dependencies>
</module>
8) Agora temos que criar nossa Base de Dados antes de continuarmos com as configurações. Essa tarefa é simples. Ao chegar neste ponto você já deve ter instalado o MySQL em seu computador (se ainda não o fez, faça rsrs), sendo assim, abra o MySQL 5.6 Command Line Client, ele irá pedir uma senha que é a mesma que você utilizou no momento da instalação. Forneça a senha e em seguida digite o comando "create database nome_que_vc_quiser_para_o_banco ;" e dê "enter". No meu caso, para este tutorial, utilizarei o nome "ZapZap", deverá aparecer o seguinte comando indicando que a base de dados foi criada:
9) Agora iremos criar a conexão entre o JBoss e sua Base de Dados MySQL. Para isso, abra o arquivo "standalone.xml" localizado na pasta "/standalone/configuration/" do JBoss. Localize dentro do arquivo a tag "<datasources>" (no plural) e logo abaixo dela insira o seguinte código:
<datasource jta="false" jndi-name="java:jboss/datasources/zapzap_datasource"
pool-name="zapzap_datasource" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://localhost:3306/ZapZap</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>root</password>
</security>
</datasource>
Trocando "ZapZap" pelo nome que você deu na criação da sua Base de Dados e "zapzap_datasource" por um nome qualquer que identifique esta conexão (lembrando que este "nome qualquer" será utilizado mais tarde).
Ainda dentro da sessão "<datasources>" (no plural rsrs), você encontrará a sessão "<drivers>" (também no plural), dentro dela, coloque o seguinte trecho de código:
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class>
</driver>
10) Toda a configuração na parte do JBoss está concluída, agora vamos ao projeto. Crie um arquivo chamado "persistence.xml" contendo o código abaixo e salve-o no diretório "/src/META-INF/" dentro do diretório principal de seu projeto (se o diretório "META-INF" não existir, crie-o. Se o mesmo estiver em outra localização, mova-o).
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="zapzap" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:jboss/datasources/zapzap_datasource</non-jta-data-source>
<class>com.jonathan.zapzapws.util.hibernate.EntityManagerUtil</class>
<class>com.jonathan.zapzapws.model.CriticasSugestoesModel</class>
<properties>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
Faça as seguintes alterações:
* Na tag "persistence-unit" altere o valor do atributo "name" de "zapzap" para qualquer outro identificador que você queira, sabendo que utilizaremos este identificador mais tarde;
* O valor da tag "non-jta-data-source" será o caminho do data-source que definimos no arquivo "standalone.xml" do JBoss no passo 9) deste tutorial.
* As tags "class" que inserimos serve para mapear as classes que se utilizarão do contexto Hibernate/JPA para injeção do EntityManager e para mapeamento das entidades do Banco de Dados. A classe EntityManagerUtil será utilizada para fornecer o EntityManager em nosso projeto e a classe CriticasSugestoesModel será utilizada para testar nossa configuração criando uma tabela e inserindo dados na base de dados. (criaremos essas classes no próximo passo).
* A propriedade "hibernate.transaction.jta.platform" tem o valor padrão pra quando se está utilizando o JBoss como Servidor de Aplicação e gerenciador de transações. Mude para o equivalente ao Servidor de Aplicação que você está usando.
* A propriedade "hibernate.hbm2ddl.auto" está definido como "update" (que atualiza o banco de dados automaticamente de acordo com as entidades criadas no código) apenas para testarmos. Em desenvolvimento eu desencorajo fortemente o seu uso e encorajo definir o valor para "validate" que valida as entidades definidas no código de acordo com o banco.
11) Crie uma classe chamada "EntityManagerUtil" que será responsável por fornecer o EntityManager para nossa aplicação. Segue o código simples da classe:
public class EntityManagerUtil {
/** entity */
private static final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("zapzap");
/** @return the entity */
public static EntityManager getEntity() {
return entityManagerFactory.createEntityManager();
}
}
Crie uma classe chamada "CriticasSugestoesModel" que será nossa entidade de testes do banco de dados. Segue o código da classe:
//Indica que é uma entidade do banco de dados
@Entity
//Define o nome da tabela do banco correspondente
@Table(name="criticas_sugestoes")
public class CriticasSugestoesModel{
/** id */
//Indica que está é a chave primária da tabela
@Id
//Nome da coluna correspondente
@Column(name="id")
private Long id;
/** texto */
//Nome da coluna correspondente
@Column(name="texto")
private String texto;
@Override
public String toString() {
return this.userId.toString();
}
@Override
public boolean equals(Object obj) {
if(obj != null && obj instanceof CriticasSugestoesModel){
if(((CriticasSugestoesModel)obj).getId() != null && ((CriticasSugestoesModel)obj).getId().equals(this.id)){
return true;
}
}
return false;
}
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return the texto
*/
public String getTexto() {
return texto;
}
/**
* @param texto the texto to set
*/
public void setTexto(String texto) {
this.texto = texto;
}
}
Altere seu arquivo "persistence.xml" com o caminho correto das classes criadas acima.
12) Pronto! Para testar sua configuração inicie seu Servidor de Aplicação, execute seu projeto e utilize o seguinte trecho de código:
CriticasSugestoesModel critica = new CriticasSugestoesModel();
EntityManager em = EntityManagerUtil.getEntity();
em.getTransaction().begin();
try {
critica.setTexto("Testando");
critica.setId(new Long(1));
em.persist(critica);
em.getTransaction().commit();
} catch (Exception e) {
em.getTransaction().rollback();
}
em.close();
É isso aí!! Se tudo ocorreu bem e você seguiu todo o passo-a-passo, certamente terá em mãos uma aplicação WEB configurada para utilizar os frameworks Hibernate e JPA com Base de Dados MySQL gerenciados em um Servidor de Aplicação JBoss!
Nenhum comentário:
Postar um comentário