Oportunidade na Accenture – Java

Olá Pessoal,

Recebi o contato abaixo através do blog do pessoal da Accenture com as vagas  a seguir É importante mencionar no titulo do email onde viu a vaga, eu recomendo que seja assim:

Assunto: Vaga Java Senior  – blog Camilo Lopes

Gostaria de saber se é possível divulgar vagas CLT.

Obrigada!

Segue descrição das vagas (19)

A Accenture é uma empresa líder global em consultoria de gestão, serviços de tecnologia e outsourcing. Em seu quadro de funcionários, conta com mais de 180 mil profissionais, com presença em 120 países, que atendem empresas de quase todos os segmentos da economia. Apontada como “A Melhor Empresa do País em Liderança” e pelo quarto ano consecutivo como “Uma das Melhores Empresas para se Trabalhar” (Guia Exame-Você/SA 2009),  a Accenture está oferecendo oportunidades para profissionais que queiram atuar como Programador Java Senior.

É necessário ter superior completo, sólidos conhecimentos em Java e conhecimento de frameworks e tecnologias relacionadas a Java.

A base de contratação pode ser Alphaville ou São Paulo, portanto é necessário ter disponibilidade para deslocar-se até esta região.

Caso tenha interesse de conhecer nossas propostas, por gentileza encaminhar seu currículo para leticia.f.seehagen@accenture.com informando a pretensão salarial e como ficou sabendo da oportunidade.

========================================

Boa sorte à todos!




JPA com Hibernate + JSF + MySQL

olá Pessoal,

Neste post, vou mostrar como usar JPA para seus projetos JEE tendo como provider o nosso Hibernate e para o view usaremos JSF. Alguns adoram o TopLink da Oracle, eu tive serios problemas com ele na parte de config, e cansei de me stressar com coisas operacionais e mantenho meu querido Hibernate como provider.

Aplicação será bem simples, apenas cadastrar um cliente. Limitamos os dados do form, pois o objetivo é mostrar como criar um ambiente para development tendo JPA nos seus projetos. Já mostrei em outros posts, como criar um projeto JPA para Java Básico. Então, recebi alguns emails e para JEE?

Lets go…

Oportunidade Java:

Estamos disponibilizando uma vaga para desenvolvedor Senior Web
. Carga horária será de 8 horas diárias. Os requisitos técnicos para esta contratação são:

- Conhecimentos nas APIs: JSF, Hibernate;
- Conhecimentos nos patterns MVC, DAO, VO;
- Desejável conhecimento em RichFaces

Regime De trabalho é CLT. O salário será de 4.000 mais benefícios. 

Interessados enviar currículos para atendimento@leiria.com.br

Obrigado.

Posts relacionados

Requisitos

Iniciando

Na imagem a seguir você tem toda a estrutura do projeto, observe que já criei as bibliotecas para o projeto e estas foram adicionadas. Se não quiser adicioanr as bibliotecas ao projeto, copie os .jars para a pasta lib e pronto. Lembre-se que ao adicionar uma biblioteca ao projeto, o stupid Eclipse não copia os .jars para a pasta lib. (ao contrário do netbeans 🙂 ).

Não esqueça também de criar um schema e uma table no MySQL, aqui chamaremos de sistemas e clientes respectivamente.

estrutura

1.monte uma estrutura conforme a imagem acima.

Para os arquivos em .jsp e .xml tive que colocar no formato imagem. Infelizmente o plugin para code no wordpress, esse é estressante quando envolve xml, html etc. preciso ficar dando um espaco para cada par de < > senão ele bagunça todo código ou até converte para qualquer outra coisa. Já gastei 1 hora somente para tentar configurar isso. Em função disso, coloquei no formato img o code bem organizado. O lado bom, é que você poderá praticar sem dar ctrl + c e ctrl + v. 🙂

E como sempre boa parte das explanações estão dentro do code no formato de comentário, lado-lado para facilar a compreensão.

Desenvolvimento

2.primeiro passo é criar o bean e fazer as devidas anotações, então veja abaixo o nosso cliente bean como está:

package br.com.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="cliente")//caso o nome da tabela seja diferente informe aqui
public class Cliente {
	@Column(name="nome")
	private String nome;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	//anotação acima indica que o campo será gerado automaticamente pelo BD
	@Column(name="id")
	private int id;
	@Column(name="sobrenome")
	private String sobrenome;
	@Column(name="cidade")
	private String cidade; 

	public Cliente() {
		// TODO Auto-generated constructor stub
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getSobrenome() {
		return sobrenome;
	}

	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

}

Agora vamos partir para criar o nosso DAO, que nele teremos a nossa fábrica de conexão. E poderiamos ter métodos genéricos como salvar, deletar, atualizar etc.Mas, não vamos implementar todos.

package br.com.dao;

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

public class DAO {

	private EntityManagerFactory emf; 

	/* se vc já está acostumado com Hibernate
	 * a ideia é a mesma do método de fabrica que
	 * criamos para os Session que vem do SessionFactory
	 * Aqui temos apenas nomeclatura diferente, pense assim.
	 */
	public EntityManager getEntityManager(){

		//responsavel pela persistencia
		return emf.createEntityManager();
	}
	public DAO() {
		//chamo ele de reprodutor da instância
		emf = Persistence.createEntityManagerFactory("sistemas");

		/* o nome passado vem do arquivo persistence.xml que contém as configs
		 * para conexão com o BD.
		 */
	}}

Agora vamos criar a classe que vai fazer a persistencia com os dados do cliente. É a ClienteDAO.java esta classe extends a classe DAO, para conseguirmos pegar um objeto objeto EntityManager que é responsável pelas inclusões, exclusões e atualizações.

package br.com.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.bean.Cliente;

public class ClienteDAO extends DAO {

	public void salvar(Cliente cliente){
		//obtendo o EntityManager
		EntityManager em = getEntityManager();
		try{
			//inicia o processo de transacao
			em.getTransaction().begin();
			//faz a persistencia
			em.persist(cliente);
			//manda bala para o BD
			em.getTransaction().commit();
		}catch (Exception e) {
			//se der algo de errado vem parar aqui, onde eh cancelado
			em.getTransaction().rollback();
		}
	}

	public List exibir(){
		EntityManager em = getEntityManager();
		try{
			Query q = em.createQuery("select object(c) from Cliente as c");

		return q.getResultList();}
		finally{
			em.close();
		}
	}
}

Agora criaremos a classe ClienteController quer terá a responsabilidade de direcionar a comunicação do JSF e pegar o foi digitado no form e persistir.

package br.com.controller;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.bean.Cliente;
import br.com.dao.ClienteDAO;
public class ClienteController {
	private Cliente cliente;
	private DataModel model;
	public ClienteController() {
		cliente = new Cliente();
	}

	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String salvar(){
		ClienteDAO clientedao = new ClienteDAO();
			clientedao.salvar(cliente);
		return "salvar";
	}
	public DataModel getTodos(){
			ClienteDAO clientedao = new ClienteDAO();
			model = new ListDataModel(clientedao.exibir());
		return model;
	}
}

Vamos configurar o no velho e querido face-config.xml

faceconfigdesign

Criando arquivo persistence.xml

o arquivo que vamos precisar para conectar ao banco de dados, parecido como hibernate.cfg.xml, em respeito de ter a mesma função, conectar ao BD.

Observe o name da persistence-unit pois, eh ele que usamos no nosso DAO.java

persistence

Não esqueça que terá que criar um folder META-INF em JavaSource e colocar o persistence.xml neste folder e não coloca-lo dentro do META-INF de WebContent. Alguns programadores acabam confundido e dai recebe as velhas exceções e ficam stressado. Take care easy!

Criando as pages JSF

1.Agora criamos três páginas .jsp com JSF, uma será index que redireciona para cadastro.jsf e a outra é somente uma mensagem dizendo que foi cadastrado com sucesso.

Index.jsp

Coloque o código abaixo na página index.jsp

cadastrojsf

Testando

Mande executar seu projeto. Clique nele e vá em Run ==> Run as ==> Run on Server

  • Cadastre um cliente

E depois verifique se ele está realmente no BD. Veja abaixo meus prints:

testecad

testesucessocad

testemysqlcad

Pessoal, vou ficando por aqui, espero que tenham gostado do post, o objetivo era dar o “ABC Prático” de JPA com JEE usando o framework JSF.

Abracos, see you later.! 🙂

Despedida da IBM

Olá Pessoal,

Bem, como alguns já ficaram sabendo nos bastidores, estou deixando a IBM, após quase dois anos de trabalho na companhia, e onde em 2008 escrevi este post. Quem lembra? Hoje, venho postar que não faço mais do time IBMer, os motivos nao posso mencionar aqui, pois envolve desde pessoal,profissional e informacoes confidenciais do projeto que participei.Apesar de ter  surgido oportunidades para trabalhar em outros projetos na IBM, mas por agora optei em viajar e me desligar da empresa, uma vez que não poderia fazer os dois.

Acredito que em nossa vida, vivemos fases e cada uma tem uma missão para nós. E acredito que tive uma boa fase na empresa. Aprendi muito tanto na parte técnica, mas desenvolvi bastante algumas habilidades comportamentais, sendo assim não posso dizer que sou o mesmo profissional que era à 2 anos atras.

Adotei a cultura da empresa,aprimorei meu perfil profissional, aprendi novas regras corporativas. Enfim, foi uma experiência que recomendo à todos que tiverem uma oportunidade de trabalhar nessa empresa. No meu caso que fui para um projeto internacional, meu inglês teve um avanço bem significativo em todos os skills da lingua, comparado com o tempo que venho estudando (jan/2008).Uma vez que o inglês era full time e com os nativos, então o que eu via na escola de idiomas poderia ir colocando em pratica e cada dia descobria um ponto a ser melhorado que as vezes por falta de pratica nao conseguia identificar de imediato. Enfim, Work for IBM, it was very good!!. Mas, cada um tem seu objetivo profissional e temos que ir atras deles e uma coisa que aprendi é que : “podemos mudar o caminho, mas nao desistir dos  objetivos”.

Quem lembra na época que entrei na companhia estava no finalzinho da minha graduação(bacharelado) e foi um presente que acabei ganhando foi ir para uma empresa como a IBM. Fiz amigos tanto dentro da empresa, quanto fora através dos programas que participei como Embaixador do AI/Mentorização. E acredito que esse relacionamento vai se manter, mesmo não fazendo da equipe.

Sentirei falta e saudades dos momentos stressante do trabalho, já que trabalhava em um projeto internacional com pessoas de culturas diferentes e fisicamente longe(Canada, New York, India etc), as discussões, o controle da situação era tudo diferente de quando estamos com a equipe fisicamente perto.E saber lidar com essa situação nem sempre é uma tarefa fácil.

E as palestras pelo AI? E os mini-cursos? Pow, esses farão falta tb, abaixo limpando o note aqui, achei uns momentos legais. Hehe. Acho que foi um dos momentos mais legais que experimentei na minha vida profissional até hoje. Claro que não vou parar de palestrar, é so mandar o convite que estarei presente :).

Não posso deixar de agradecer aos amigos IBMer que sempre deram aquele apoio em vários momentos aonde a experiência deles que faziam toda diferença, que são eles: Juliano Martins(eng. De Soft), Josy Santos, José Damico, Miro(developer), Katia Pessanha (ex-gerente do AI), Cezar Taurion (Executivo), Ana Carolina (AI). Pessoal obrigado! Foi realmente um prazer ter trabalhado com vocês. Tem um amigo que entrou praticamente junto comigo e que sempre dar uma força de amigo, o Alberto Leal.

Sei que muitos vão perguntar para onde estou indo ne? Bem, o meu destino agora é esse. Ficarei algumas semanas, aprimorando meu inglês em um curso intensivo e tb as minhas queridas férias que venho tentando tirar desde 2005. Quando voltar eu conto pra vcs como foi o intercambio, acredito que quando estiver la, meu acesso à internet será quase zero. Primeiro que estarei bastante ocupado na escola com aula de manha/tarde e outras atividades.

Abracos!! see you next post.

P.S: Eu viajo nesta sexta-feira 20/08 (e so chego em NZ no domingo 22/08 pela manha) e a partir daí já deixei alguns posts programados aqui no blog, possivelmente não poderei responder os comentários, após esta data. Mas, podem enviar que assim que ficar ON, eu já respondo. Dia 21-22/09 estou chegando no Brasil.Mas, tentarei responder antes.

Palestras & Eventos AI IBM

ibmairh

ibmrhai2


simform

Sinform 001

Sinform 012

uesbai2

uesbai

uesbai3