Blog

JPA com Java Básico MySql

olá pessoal, nesse post vou apresentar como fazer persistência de dados usando apenas JPA, mas com Java Básico o objetivo é ajudar aqueles que estão dando o primeiro passo com a tecnologia. Não confunda este post com este Java Básico + Hibernate JPA + Mysql são parecidos, mas aqui nos não vamos envolver nada de Hibernate, ou seja, será 100% JPA.

Recomendado: Você vai precisar configurar a JPA no seu projeto Java, portanto veja no post abaixo:

*Basta adicionar ao seu projeto o arquivo .jar referente a JPA do pacote hibernate annotations. Nada mais que isso, confira: Java Básico + Hibernate JPA + Mysql

Outros posts relacionados:

Preparando o ambiente desenvolvimento

  1. crie um Java project no eclipse

  2. E monte conforme a estrutura abaixo:

  3. A classe TesteJPA  deve conter o método main.

  4. Não esqueça de adicionar o .jar ao seu projeto. Se tem dúvida com fazer isso veja nos posts citados acima.

Preparando Banco de Dados

Vamos usar o MySql como BD e vou levar em conta que você já tem o mesmo instalado e configurado. Crie apensa um DataBase e uma table para este. Se quiser seguir o exemplo do post o nosso ficou assim:

DataBase: sistemas Table: Cliente

A tabela cliente possui os seguintes campos como VARCHAR(nome,cidade,sobrenome)e um Integer(id). O id é auto_increment e chave-primaria da tabela.

Desenvolvimento

Explicando as anotações
@Entity = é uma entidade que representa uma class bean;
@Table = mapeia com o nome da tabela. Aqui eu coloquei o table para explicar, mas poderia omitir levando em conta que eu teria uma table no meu BD com o mesmo nome da minha class Bean. Ou seja, se você não especificar qual será a tabela do BD, será considerada o nome do Bean. Tenha atenção se você tem tabelas com nomes diferentes em relação ao seu bean;
@Id = tem relação com a chave primaria da sua tabela;
@Column = mapeia com as colunas da sua tabela, segue a mesma regra de table, quando ter colunas com nomes diferentes este campo eh obrigatório, caso contrario non-required ;

Deixe sua classe Cliente.java conforme abaixo:

package br.com.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="cliente")
public class Cliente {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	private String nome;
	private String cidade;
	private String sobrenome;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getSobrenome() {
		return sobrenome;
	}
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	} }

A classe ClienteDAO é responsável por implementar o CRUD usando a JPA, vamos ver aqui o salvar, excluir e atualizar. Então atualize seu arquivo ClienteDAO.java conforme abaixo:

package br.com.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.bean.Cliente;

public class ClienteDAO {

	EntityManagerFactory emf; 

	private EntityManager getEntityManager(){
		return emf.createEntityManager();
	}
	public ClienteDAO() {
	emf = Persistence.createEntityManagerFactory("sistemas");
	}

	public void salvar(Cliente cliente){
		EntityManager em = getEntityManager();
		try{
			em.getTransaction().begin(); //inicia o processo de transacao
			em.persist(cliente);//permite fazer insercoes e atualizacoes no bd
			em.getTransaction().commit();//realizo as alteracoes no banco
		}catch (Exception e) {
			em.getTransaction().rollback();// se rolar uma excecao cancelo acao
			e.printStackTrace();//mostro o percurso de onde veio as excecoes
		}finally{
			em.close();
		}
	}
	public void excluir(Cliente cliente){
		EntityManager em = getEntityManager();

		try{
			em.getTransaction().begin();
			cliente = em.merge(cliente);
			em.remove(cliente);
			em.getTransaction().commit();
		}catch (Exception e) {
			em.getTransaction().rollback();
		}
	}
	public void atualizar(Cliente cliente){
		EntityManager em = getEntityManager();
		try{
			em.getTransaction().begin();
			em.merge(cliente);
			em.getTransaction().commit();
		}catch (Exception e) {
			em.getTransaction().rollback();
		}}
	}
  1. Fazendo a persistência de dados no arquivo persistence.xml. Precisamos passar as informações do BD, user, password etc para o arquivo persistence.xml, assim conseguimos a conexao com o nosso BD. Então atualize o arquivo .xml conforme o code abaixo(tive que dar um espaco entre os <  >  pois o plugin para code não estava reconhecendo com XML):

    org.hibernate.ejb.HibernatePersistence
    < persistence-unit name="sistemas" transaction-type="RESOURCE_LOCAL">
    org.hibernate.ejb.HibernatePersistence
            
    		br.com.bean.Cliente
    
                
                < property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
                < property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
                < property name="hibernate.connection.url" value="jdbc:mysql://localhost/sistemas" />
                < property name="hibernate.connection.username" value="camilo" />
                < property name="hibernate.connection.password" value="integrator" />
     
                < property name="hibernate.show_sql" value="true" />
                < property name="hibernate.format_sql" value="true" />
                < property name="use_sql_comments" value="true" />
    
            < /properties>
    
        < /persistence-unit>
  2. Atualizando a classe TesteCliente.java. Precisamos ter uma classe para testar o nosso CRUD com JPA. Para isso teremos uma classe java tradicional com o método main. Eu comentei algumas linhas apenas para poder testar outros recursos. Mas, levando em conta que sua table não há nenhuma informação, vamos executar primeiramente a opção salvar.

    package br.com.teste;
    
    import br.com.bean.Cliente;
    import br.com.dao.ClienteDAO;
    
    public class TesteCliente {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		ClienteDAO clidao = new ClienteDAO();
    		Cliente cliente = new Cliente();
    	//	cliente.setCidade("salvador");
    		cliente.setNome("recife");
    		cliente.setSobrenome("neto");
    		//cliente.setId(12);
    		clidao.salvar(cliente);
    		//clidao.excluir(cliente);
    	//cliente.setCidade("Sao Paulo");
    		//cliente.setId(15);
    		//clidao.atualizar(cliente);
    	}
    }

Não Esqueça:

  • Esteja certo que você deu um start no seu BD.

  • não esqueça dos .jars no seu projeto.

Verificando dados no BD

  1. Acesse seu banco de dados e veja se a informação inserida realmente consta na tabela. Aqui usei uma ferramenta chamada Mysql Query Browser para facilitar o trabalho com o BD. No meu caso eu fiz varias alterações.

Vou ficado por aqui e espero que tenham gostado do post. Para quem está em primeiro contato com a tecnologia pode parecer difícil, estranho ou complicado essa estrutura da JPA, mas pode ter certeza que é mais produtivo no ciclo de desenvolvimento.

Abraços e até o próximo post.

JPA com Jboss

womanjava

olá pessoal, nesse post vou mostrar como criar um JPA Project e seus beneficios através da ferramenta Jboss Tools. Em um dos meus posts eu expliquei como instalar e configurar o Jboss tools no eclipse.

Montar uma estrutura JPA na “mão-grande” é um pouco cansativo e não tão produtivo quando se tem auxilio de uma ferramenta como Jboss tools. Nao estou dizendo que a ferramenta vai programar por você, ela apenas vai fazer a parte operacional não relacionada a programação, e você como bom desenvolvedor vai estar focado na parte lógica do negócio.

Lets go…

Outros posts:

  1. Abra o Eclipse e o seu workspace (uma vez que tenha instalado o plugin Jboss tools)

  2. Clique em New ==> Project

  3. Na lista que aparece vá até o diretório JPA.

  4. Escolha JPA Project, conforme a imagem abaixo:

    japproject

  5. Clique em next e na próxima pagina vamos dar o nome ao projeto e configurar o servidor. Aqui estamos usando o TomCat. Veja na imagem a seguir:

    namejpa

  6. Clique em next duas vezes. Até encontrar a tela a seguir. Agora precisamos configurar JPA e a plataforma. Depois clique em Finish

    jpaeclipse

  7. Pronto! Agora vc ja tem um projeto apto a usar JPA com os .jars adicionados estrutura ja montada pelo Jboss tools. Confira na imagem abaixo:

    jpaestrutura

Se você não conhecia o Jboss tools fica ai um pouquinho como a ferramenta pode ajudar no dia-dia.. 😉

Abraços! See you later…


Follow me: http://twitter.com/camilolope

série 1:How to say…in english?

doenglishstudying

Olá Pessoal,

Desde do último domingo, fiquei pensado: “Qual post para semana que vem? Técnico ou não?” Ai fiquei nessa briga, e resolvi postar sobre algo não técnico, e ai veio a idéia que tal postar algumas expressões que falamos em português, mas gostariamos de saber como  diz er em inglês, ou seja, how to say…in english?

Não vou querer ir muito longe sobre o assunto, mas postarei algumas expressões que usamos com bastante frequencia em português e  as vezes sentimos a necessidade de falar em outro idioma(english). E não duvide que em um contexto informal um nativo americano/britânico vai usar essas expressões como fazemos no nosso dia-dia. As informações desse post teve como referência o livro how to say… in english? Na verdade estou “lendo” o livro, ja que pretendo passar uns dias abroad este ano.

Lets go…

Outros posts no blog:

Como seria dizer em inglês:

  • vamos tomar a saideira..” isso é bem comum, principalmente nas sextas-feiras.rs

  • abrir uma exceção”

  • aconteça o que acontecer”

  • bater as botas”

  • tomar pau na escola”

  • etc…

Hoje vou apresentar alguns, confiram abaixo e pequenas frases para fixar e praticar:

One for the road = saideira

  • John, lets have one for the road, buddy!

  • She has never had one for the road with us, why ?

Make an exception = abrir uma exceção

  • I will make an exception for you my friend.

  • We are going to make an exception for you, ok?

  • Can you make an exception for me?

Come what may = aconteça o que acontecer….

  • Come what may I am going to travel to Toronto this year.

  • Come what may she is not going to travel tomorrow morning.

To kick the bucket = bater as botas

  • did you know that old Mr. Mathew kicked the bucket?

  • João kicked the bucket, last month.

To flunk = tomar pau em exames, testes

  • I flunked in all subjects (eu tomei pau em todas disciplinas).

Por hoje é o suficiente, não ter uma lista imensa, processo de vocabulário tem que ser de forma natural, criar lista e tentar memorizar segundo especialistas não funcionam muito bem. Porque o mais importante é saber quando usar a expressão, palavra etc. Vou ficando por aqui e espero que você tenham gostado. Tem uns palavrões que estou pensnado em publicar :D.

see you next post.


Follow me: http://twitter.com/camilolope

Mentorização AI IBM Case

olá Pessoal,

Desta vez o nosso entrevistado é  o Mario Razec. Para quem não conhece  o Mário é um grande exemplo de aluno e que tem um futuro brilhante. O mesmo tem participado do programa Mentoring Program IBM e resolvi entrevista-lo para que o nosso amigo Razec possa compartilhar um pouco da experiência obtida no programa, além de que forma este impactou na vida acadêmica. Já que durante a mentorização o Mario estava ainda como graduando em Ciência da Computação.

Lets go…


Mini-curriculo

Mario C. Ponciano a.k.a Razec, Bacharel em Ciência da Computação pela Anhanguera Educacional/Leme graduado em dezembro 2009. Onde foi estudante mentorizado IBM o qual pesquisou sobre a Interoperabilidade de Web Services em Sistemas Distribuídos e foi construído um projeto open-source com objetivo de compartilhar pequenos recursos assim como o reuso do código.

Entusiasta open-source, possui um grande interesse de se tornar Arquiteto de Sistemas e Pesquisador de Novas Tecnologias. Contribuí em projetos open-source, assim como Eclipse Platform além de escrever tutoriais e participar da comunidade de software livre.

1.blog: como conheceu o Programa ? E por que se interessou ?

Mário: Através de uma palestra com José Damico, do programa IBM Academic Initiative realizada na Anhanguera Educacional/Leme, onde falou sobre novas tecnologias, hacking, AI, open-source, java, etc.

O interesse surgiu após mencionar alguns assuntos relacionados com minhas metas, então quando mostrou que poderia colaborar com o open-source através de ferramentas IBM, além de construir algo que a comunidade poderia utilizar e agregar conhecimento para meu futuro.

2.blog: Além de você quantos outros colegas de sua instituição estão sendo mentorizado pelo programa?

Mário: Na Anhanguera Educacional/Leme apenas eu. Mas após alguns universitários terem visto o post no blog do IBM Academic Initiative começaram à procurar para tirar dúvidas e para participar do projeto, provando assim que o projeto realmente existe possibilitando que todos tirem proveito.

3.blog: Fale um pouco como o programa de Mentorização influenciou e tem influenciado na sua vida acadêmica.

Mário: Influenciou à estudar e buscar pela resposta como um verdadeiro cientista da computação, permitindo ajudar outros com as descobertas realizadas. Aprendi a trabalhar com ferramentas que apenas ouvia-se falar como: RAD, DB2, WebSphere, SOA.

4.blog: Quais os primeiros pontos no inicio que você considerou como um “obstáculo” ?

Mário: Acredito que o grande obstáculo são as pessoas ao redor dizendo que tudo é difícil e as respostas a algumas questões exigem pesquisa profunda. Porém acredito que todos os obstáculos podem ser vencidos com a persistência.

5.blog: Comente um pouco o trabalho do mentor.

Mário: Como tecnologia tem a tendência de evoluir muito rápido e ao mesmo tempo o mentor, como o próprio nome diz é a pessoa que guia o aprendiz de maneira que não perca seu tempo em busca de algo que não o ajudaria, tem por objetivo em colocar o estudante no caminho certo tirando suas dúvidas e sempre melhorando com idéias objetivas, é feito isto através de pequenas reuniões, e-mail e algumas madrugadas no skype. =)

6.blog: além da experiência técnica, qual outro tipo de experiência você conseguiu obter desde que entrou no programa?

Mário: O programa incentivou a aprender o inglês e tenho me dedicado muito a isto, pois toda documentação é em inglês e isto tem contribuído para uma evolução substancial. Obtive também muitos amigos, além de aumentar meu networking e colaborar em projetos open-source.

7.blog: Fale sobre o seu projeto

Mário: O projeto consiste na idéia de facilitar a vida do desenvolvedor, todos que desenvolvem sabem como é cansativo toda vez escrever o mesmo trecho de código ou então relembrar como fazer determinada sintaxe. Isto acontece pela razão de existir muitas linguagens de programação com uma sintaxe pré-definida.

Com esta idéia em mente o projeto permite poupar tempo armazenando pequenos trechos de códigos repetitivos, conhecidos como snippets.

Exemplo:

Um usuário aprendeu a utilizar um For-Each-Loop em Java, então cria-se um snippet.

for (tipo var : coleção) {corpo-do-loop}

Este pequeno trecho criado pelo o usuário pode ser enviado e armazenado no skypilot-sharing, o trecho armazenado passa a ficar disponível para o desenvolvedor e quando precisar reutilizar o código basta procurar pelo mesmo, através do plugin criado para o Eclipse e adicionar o trecho do código ao projeto, sem a necessidade de reescrever novamente o trecho do código, ou relembrar a sintaxe.

Maiores informações sobre Projeto: Skypilot-Sharing (US) ou Skypilot-Sharing (BR)

8.blog: Mario, que mensagem você poderia deixar para os alunos que ainda não se “despertaram” para o programa?

Mário: Aproveite a oportunidade e corra atrás de suas metas tendo em mente as palavras de Napoleon Hill: “Action is the real measure of intelligence.”

9.blog: Gostaria de Agradecer a Alguém?

Mário: Sim. Afinal tudo isto consegui concluir graças aos IBMers Argemiro Lima perdendo algumas horas de sua madrugada no skype, Juliano Martins, José Damico e obrigado Camilo Lopes pela oportunidade de explicar um pouco mais sobre o IBM Academic Initiative.

Mario, eu que tenho agradecer a você por ter disponibilizado um pouco do seu tempo e compartilhado essa valiosa experiência e ficando ai como um exemplo para os demais alunos, que vivem reclamando da vida. A persistência e o acreditar são pontos chaves em nossa vida.

abracos,  see you next post.


Follow me: http://twitter.com/camilolope

Como ser um Programador Senior Java

Olá Pessoal,

Ano passado eu falei como ser um programador júnior & pleno. Discutimos qual o perfil técnico que no minimo o programador deve “ter” e o que esperado por algumas companhias. Claro que nenhuma informação contida no post era algo cientificamente comprovado(nesse também não). Apenas um achismo do autor tendo como base a experiência, analise do mercado, bate papo com alguem do RH e um pouco de achismo. Hoje vou falar sobre ser Pleno.

  • O que é ser um programador pleno?

  • Como se tornar um?

  • O que preciso saber tecnicamente para ter um perfil de Programador Java Pleno?

Lets go…

Outros posts:

Antes de começar, quero dizer que um profissional de IT não vive apenas dos conhecimentos técnicos nos dias de hoje. Há outras qualidades que são avaliadas e tem o mesmo peso ou até mais que o número de frameworks, certificações e tempo de experiência. Um exemplo que posso citar é trabalho em equipe, relacionamento, comunicação, equilíbrio etc. Do que adianta ser “bom” tecnicamente, mas você não sabe se comunicar bem, não tem proatividade, se acha o dono do mundo e não consegue de forma nenhuma trabalhar em equipe?!! Você pode ter a experiência que for em uma determinada tecnologia, mas os pontos que acabei de citar, eles são classificatório/eliminatório em um processo seletivo. O que um dia as empresas já fizeram “vista grossa” e queria apenas aquele “cara de informática” para “mexer com o computador”. Esse perfil não existe mais nas melhores empresas para se trabalhar.

Mas, a pergunta de muitos: “Camilo, o que eu preciso aprender, para se tornar um programador sênior, quantos frameworks, quanto tempo isso leva? Etc”.

  • Primeiro: Não existe o tempo definido e sim sua experiência adquirida nos projetos que tem participado e tecnologias que tem usado, não existe receita dizendo que somente se vc usou tecnologia X por Y tempo que vc pode se tornar um programador sênior. A sua capacidade de resolver problemas usando a tecnologia correta, atendendo os requisitos do cliente e não perdendo o foco do negócio vai contribuindo para sua formação. Então tire isso da mente que você vai se tornar sênior somente daqui à 5-10 anos. por alguem ti falou Não está escrito em lugar nenhum isso, porém a média geral que bem comum de  ver no mercado, é que boa parte dos seniors não tem menos de 5 anos de experiência, mas por que isso? Bem, lembre-se que vc passa um bom tempo como júnior, depois vai para pleno e cai em sênior Mas, tb não há nada que diga que vc tem que seguir essa ordem. Já tive colegas que entrou como júnior e ficou por 1 ano e depois já caiu para sênior, isso vai do skill técnico do profissional + projeto + habilidades não técnicas que citei no inicio do post.

Agora outro ponto importante, é o projeto que você está participando ele é um fator bem decisivo e que acelera o processo, se tem um projeto bem ativo, dinâmico, que esteja aberto ao uso de novas tecnologias isso vai contribuir diretamente para sua formação e não tem salário que pague por isso.

Vejamos a parte técnica de aprendizado que se espera de um sênior Java:

  1. Parece que isso nem deveria aparecer aqui, mas é bom repetir. Experiência em Java, O.O, Design Patterns são fundamentais para um bom sênior Java;

  2. Ter o conteúdo da SCJA, SCJP, SCWCD, SCDJWS de forma suave na mente e na prática. Não estou dizendo que deve ser certificado, mas dominar todo aquele conteúdo como tomar café-da-manhã todos os dias;

  3. Dominar XML de forma fluente.

  4. Ser capaz de eliminar POGs e bugs de um sistema em questão de segundos ou de minutos, sem cometer erros. Essa habilidade é importante lembre-se tempo é $$.

  5. Ser capaz de otimizar código de tal forma que o entendimento seja como somar 2 +2. Quer uma prova disso: Veja o livro refactoring de Martin Fowler o cara refatora de uma forma que tem que ser elogiada. Então usar de forma bem XP, Refactoring etc. Não pode ser uma novidade para um sênior

  6. Conseguir transformar qualquer tipo de requisito mal-definido e contraditório em algo funcional, eficiente, sem bugs e nada de gambiarras;

  7. Tratar SQL, JDBC, Java, JSP, HTML, Servlet, JavaScript, Reflection, Annotations, XML, EJB, SOA, Threads e concorrência como coisas tao trivialmente simples como respirar. Tendo total, completo e absoluto domínio sobre isso

  8. Dominar os frameworks mais usados mercado, exemplo no momento que escrevo o posts: Struts 2, Spring, JSF, Hibernate etc. De 10 vagas para Java 10 pedem pelo menos conhecimento em 1 desses frameworks. Seja para júnior,pleno ou sênior

  9. E por ultimo não parar de estudar, continuar de olho no mercado devorando novas tendências.

  10. Preciso dizer que é bom saber inglês? E de preferência dominar o idioma de verdade e nao somente o “inglês técnico”.

Bem pessoal, vou ficando por aqui e espero que tenham gostado, o objetivo maior aqui é mostrar e ajudar aqueles que estão perdido “o que estudar Java?! ”, acredito com os pontos citados dar para ter um ideia e traçar o mapeamento o que estudar. Claro que as informações aqui não passa  apenas da minha opinião,  e não acordei hoje e resolvi escrever sobre o assunto e pronto. Pesquisei, conversei com colegas mais experientes, aproveitei profissionais de alto de nível em seleção de profissionais IT, para sugar um pouco as necessidades deles etc. E isso já vem sendo feito a um certo tempo. Não deixem de suas opiniões.

Abraços, see you next post.


Follow me: http://twitter.com/camilolope