sexta-feira, 28 de outubro de 2016

Tagged under: ,

JPA Hibernate – Como funciona a anotação @version?


Recentemente um colega de trabalho me perguntou qual era função da anotação @version presente nas entidades aqui do projeto. Achei interessante essa pergunta.
Para responder essa de pergunta temos que lembrar que todo banco de dados possui um controle de concorrência entre transações (se necessário solicitem nos comentários que faço um post explicando a fundo sobre isso). Para esse post só precisamos conhecer o método de controle Optimistic concurrency control (controle de concorrência otimista).
Optimistic concurrency control (OCC)
Optimistic concurrency control ou controle de concorrência otimista é um método aplicado nas transações de bancos de dados relacionais. Nesse método se acredita que a probabilidade de que duas transações utilizarem o mesmo objeto é minima, logo nada é verificado enquanto a transação está sendo executada e isso faz com que o custo dela diminua.
Normalmente essa técnica funciona bem em Frameworks ORM porque eles conseguem escalonar as transações para que ocorra pouca ou nenhuma interferência. Mas no caso de ocorrer uma interferência o que acontece? Simples, alguma transação escolhida pelo Hibernate vai ser abortada e terá que ser recomeçada pelo cliente.
A anotação @version
Agora que sabemos superficialmente o que é um controle de concorrência e o método OCC fica mais fácil compreender a importância do @version em nossas entidades. Tenha em mente que ao adicionar um atributo com essa anotação não precisamos nos preocupar em alterar seu valor porque o Hibernate fica encarregado dessa função.
Para usarmos o método de concorrência otimista só precisamos declarar um atributo com o nome version em nossa entidade. Normalmente ele é do tipo numérico e também pode ser do tipo data, mas não recomendo essa pratica e vou explicar o motivo no final deste post, abaixo temos um exemplo da classe Consulta.
  1. @Entity
  2. @Table(name = "CONSULTAS", schema = "tableless")
  3. public class Consultas{
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.AUTO)
  6. @Column(name = "ID_CONSULTA")
  7. private Integer numero;
  8.  
  9. @Temporal(TemporalType.TIMESTAMP)
  10. @Column(name = "DATA_CONSULTA")
  11. private Date dataConsulta;
  12.  
  13. @ManyToOne(fetch = FetchType.LAZY)
  14. @JoinColumn(name = "PACIENTE_CODIGO")
  15. private Pacientes paciente;
  16.  
  17. @Version
  18. private Integer version;
  19.  
  20. //getter e setter
  21. }
Com esse mapeamento o Hibernate vai usar automaticamente o número da versão para verificar se o objeto utilizado na transição foi atualizado desde a ultima vez em que ele foi requisitado. Pelo código SQL a baixo podemos ver a presença do atributo version tanto no trecho do SET como na cláusula WHERE isso acontece porque o Hibernate vai buscar o objeto no banco de dados usando também o número da versão e vai incrementar esse número ao mesmo tempo.
  1. UPDATE CONSULTAS
  2. SET DATA_CONSULTA = ?, PACIENTE_CODIGO = ?, version = ?
  3. WHERE ID_CONSULTA = ?
  4. AND version = ?
@version com Data
Usar um tipo data no atributo version é uma prática que não recomendo porque no banco de dados a coluna será do tipo TIMESTAMP e isso pode acabar permitindo que duas ou mais transações possam ser executadas com o mesmo objeto ao mesmo tempo dependendo da precisão do fuso horário configurada no banco de dados, caso essa situação acabe acontecendo vamos acabar tendo uma violação de normalização. Algumas pessoas preferem utilizar o tipo data para conseguirem visualizar “quando” aquele objeto foi alterado pela ultima vez, caso essa seja sua necessidade recomendo que crie um novo atributo em sua classe ao invés de utilizar a anotação @version como data.
Por fim espero que esse post te ajude a trabalhar com controle de concorrência no Hibernate. Dúvidas, sugestões, correções, elogios nos comentários ou no meu twitter.

terça-feira, 25 de outubro de 2016

Tagged under: , ,

Promoção certificação Java (35% de desconto)

Pessoal,

a Oracle está dando 35% de desconto em algumas certificações. Para isso vocês podem comprar o Vouncher de desconto no link e aplicar a certificação.

O vouncher é válido até 31/12/2016. O custo da certificação com o Vouncher fica (R$ 338). O preço sem Vouncher é R$ 521.


Lista de todas certificações (O Vouncher é aplicado para os itens em negrito)

  • Java SE (Standard Edition)
    • Java SE 7 Programmer I 1Z0-803 
    • Java SE 7 Programmer II 1Z0-804 
    • Upgrade to Java SE 7 Programmer 1Z0-805 
    • Java SE 8 Programmer I 1Z0-808 
    • Java SE 8 Programmer II 1Z0-809 
    • Upgrade Java SE 7 to Java SE 8 OCP Programmer 1Z0-810 
    • Java Foundations (novice-level exam) 1Z0-811 
    • Upgrade to Java SE 8 OCP ( Java SE 6 and all prior versions) 1Z0-813 
    • Java SE 5 and 6, Certified Associate 1Z0-850 
    • Java SE 6 Programmer Certified Professional 1Z0-851 
    • Java SE 6 Programmer Certified Professional Upgrade 1Z0-852 
    • Java SE 6 Developer Certified Master Assignment 1Z0-855 
    • Java SE 6 Developer Certified Master Essay 1Z0-856 
    • Java SE 6 Developer Certified Master Assignment for Resubmission 1Z0-857 Java EE
  • Java EE (Enterprise Edition):
    • Java EE 6 Enterprise Architect Certified Master 1Z0-807 
    • Java (EE) Enterprise Architect Certified Master Assignment 1Z0-865 
    • Java (EE) Enterprise Architect Certified Master Essay 1Z0-866 
    • Java (EE) Enterprise Architect Certified Master Assignment for Resubmission 1Z0-867 
    • Java EE 6 Enterprise JavaBeans Developer Certified Expert 1Z0-895 
    • Java EE 6 JavaServer Faces Developer Certified Expert 1Z0-896 
    • Java EE 6 Web Services Developer Certified Expert 1Z0-897 
    • Java EE 6 Java Persistence API Developer Certified Expert 1Z0-898 
    • Java EE 6 Web Component Developer Certified Expert 1Z0-899
Este link apresenta todas certificações da Oracle disponíveis. 


segunda-feira, 24 de outubro de 2016

Tagged under: , , ,

Java Bahia no Ucsal Talks 04 em 08/11 no campus de Pituaçu


Boa noite pessoal,

seguindo o planejamento de visitar as universidades soteropolitanas, o grupo Java Bahia divulga sua agenda de encontros para o mês de novembro. Diferente dos outros eventos, por decisão da organização do evento, as inscrições não serão feitas via Meetup. 

Mais eventos estão sendo organizados e até o final do ano definiremos o novo formato de ciclo de palestras do Java Bahia.
  • Evento: 
    • Ucsal Talks 04 em 08/11 no Campus de Pituaçu da Universidade Católica do Salvador.
  • Inscrições:
    • Devem ser feitas em http://migre.me/vkdoh
    • Palestra gratuita, aberta ao público, com certificado de participação.
  • Descrição: 
    • Acontece na UCSal em 08/11/16 (terça-feira) palestra sobre JUGs e JPA.  
  • Endereço: 
    • UCSal - Campus de Pituaçu - Prédio A - Auditório Térreo
  • Quando:
    • 08/11/2016 (terça-feira), das 19:00h às 21:00h
  • Palestras:
    • JUGs: Java User Group: O que é um JUG e como eu posso participar? 
      • Palestrante: Jefferson Moreira (Analista de sistemas formado pela Unijorge, atualmente lidera times na Petroreconcavo)
    • JPA de A à Z: Porque conhecer a JPA? 
      • Palestrante: Mateus Malaquias (Bacharel em Sistema de Informação, desenvolvedor Web com tecnologias Java e JUG Leader do JavaBahia. Entusiasta por novas tecnologias, tendências, front-end e software livre)
  • Mais informações:
    • https://www.facebook.com/infoucsal/
    • https://pt-br.facebook.com/javabahia
    • https://twitter.com/javabahia




Tagged under: , , ,

Java Bahia no Ucsal Talks 04 em 08/11 no campus de Pituaçu


Boa noite pessoal,

seguindo o planejamento de visitar as universidades soteropolitanas, o grupo Java Bahia divulga sua agenda de encontros para o mês de novembro. Diferente dos outros eventos, por decisão da organização do evento, as inscrições não serão feitas via Meetup. 

Mais eventos estão sendo organizados e até o final do ano definiremos o novo formato de ciclo de palestras do Java Bahia.
  • Evento: 
    • Ucsal Talks 04 em 08/11 no Campus de Pituaçu da Universidade Católica do Salvador.
  • Inscrições:
    • Devem ser feitas em http://migre.me/vkdoh
    • Palestra gratuita, aberta ao público, com certificado de participação.
  • Descrição: 
    • Acontece na UCSal em 08/11/16 (terça-feira) palestra sobre JUGs e JPA.  
  • Endereço: 
    • UCSal - Campus de Pituaçu - Prédio A - Auditório Térreo
  • Quando:
    • 08/11/2016 (terça-feira), das 19:00h às 21:00h
  • Palestras:
    • JUGs: Java User Group: O que é um JUG e como eu posso participar? 
      • Palestrante: Jefferson Moreira (Analista de sistemas formado pela Unijorge, atualmente lidera times na Petroreconcavo)
    • JPA de A à Z: Porque conhecer a JPA? 
      • Palestrante: Mateus Malaquias (Bacharel em Sistema de Informação, desenvolvedor Web com tecnologias Java e JUG Leader do JavaBahia. Entusiasta por novas tecnologias, tendências, front-end e software livre)
  • Mais informações:
    • https://www.facebook.com/infoucsal/
    • https://pt-br.facebook.com/javabahia
    • https://twitter.com/javabahia




sábado, 22 de outubro de 2016

Tagged under: , , ,

Feedback III Simpósio de Tecnologia da Informação na Faculdade Visconde de Cairu

Boa noite pessoal,

hoje participamos do III Simpósio de Tecnologia da Informação promovido pela Faculdade Visconde de Cairu que tem como coordenador o professor Leandro Vaz, que compartilhou que esse evento é uma tradição na Faculdade, ocorrendo pelo terceiro ano seguido com sucesso e casa cheia. Esse, até o momento, foi o evento com maior número de adesão de participantes no tour de visita as universidades que iniciamos em agosto/2016. O professor Leandro ficou de nos passar os números oficiais, mas pela contagem não oficial, tivemos aproximadamente 100 pessoas no auditório da Faculdade. O evento iniciou as 9h, onde demos os parabéns pelo dia do profissional de informática (19/10/2016).

Parabéns aos profissionais de TI, por ajudar no processo de transformação da sociedade, criando soluções e mercados novos. Ajudando as pessoas e as empresas a serem mais produtivos e competitivos, tornando a vida humana mais fácil através da computação.

No simpósio falamos sobre comunidade, Spring Data Jpa e carreiras (clique aqui para acessar as palestras). Tivemos feedbacks bastante positivos e até alguns estudantes que nos procuraram para saber como colaborar com o Java Bahia. Isso é muito bom e positivo e ficamos felizes com o resultado!!

Nossos próximos eventos serão em novembro, nas faculdades Unime e Ucsal. Assim que tivermos a confirmação oficial das datas divulgaremos aqui e no meetup. Nos acompanhem no Twitter e no blog.

Pretendemos levar o tour ainda para Ufba, Ifba e Uneb, estamos acertandos os detalhes. Em 2017, com a comunidade movimentada, mudaremos o formato e definiremos como promoveremos mais eventos para troca de informação e conhecimento.

Agradecemos a todos pela presença de hoje e vamos aos próximos!




segunda-feira, 10 de outubro de 2016

Tagged under: , , ,

III SIMPÓSIO DE TECNOLOGIA DA INFORMAÇÃO - Faculdade Visconde de Cairu

No dia 22/10 acontecerá o III simpósio de tecnologia da informação da Faculdade Visconde de Cairu (localização.) . O evento inicia as 8h e vai até as 12h no Salão de Convenções da faculdade. A inscrição terá um custo simbólico, a pedido da organização da faculdade, de 1kg de alimento não perecível. A faculdade emitirá certificado de atividade complementar e a agenda segue abaixo:

  • 8:00h Credenciamento
  • 8:30h Abertura do Evento
    • Prof. Me. Leandro dos Santos Gonzalez - Coordenador do Curso de Análise e Desenvolvimento de Sistemas
  • 9:00h Palestra
    • Título: Java User Group: o que é e como eu posso participar?
    • Palestrante: Sr. Jefferson Moreira Analista de Sistemas e Líder de Equipe na Petroreconcavo
  • 10:00h Palestra
    • Título: Carreira do desenvolvedor Java: O que eu preciso saber? 
    • Palestrante: Sr. Antônio Lázaro Analista de Sistemas e Líder do JavaBahia
  • 11:00h Palestra
    • Título: Spring Data 
    • Palestrante: Sr. Ivan Frederico Bomfim Cruz de Queiroz Analista de Sistemas da Indra Brasil
  • 12:00h - Encerramento
O evento será aberto a comunidade, e as inscrições devem ser feitas via plataforma meetup.

Inscrições no meetup: https://www.meetup.com/Java-Bahia/events/234768357/ 

Contatos:      
Tagged under: , , , ,

Feedback sobre os eventos organizados pelo Java Bahia até o momento.

Pessoal,

em 2016, desde agosto, estamos trabalhando em retomar o movimento do JUG Java Bahia e estamos rodando em diversas universidade, levando apresentações com três pilares: comunidade, carreiras e alguma apresentação de ordem técnica.

Iniciamos essa jornada em 27.08.2016 na Unijorge com apoio da professora Marla Dore, com as palestras de Otávio Santana (@otaviojava), Jefferson Moreira (@jeffersonmore), falando sobre comunidade. Antonio Lazaro (@antonio_lazaro) falando sobre carreiras e Mateus Malaquias (@mmalaquias1) dando um overview do JPA, que foi compilada a partir de uma série que o mesmo escreveu no blog (1 e 2). Para quem não conhece, Otávio Santana é de Salvador e mora atualmente em SP mas é uma pessoa que apoia e fornece suporte para o JUG Java Bahia e, principalmente foi  quem motivou nosso time a fomentar a comunidade soteropolitana.

A partir desse evento, tivemos feedbacks positivos e decidimos levar esse evento para outras universidades da Bahia.

Em 14/09, fomos a FTC de Feira de Santana com as palestras de Mateus (comunidade) e Jefferson (JPA) no encontro sobre desenvolvimento Java, evento organizado pelos estudantes da FTC.

Em 24/09, fizemos na Ruy Barbosa, com apoio da professora e coordenadora dos cursos de computação Angela Baptista Reis, o II encontro do Java Bahia nas universidades. Nesse evento, se juntou ao nosso time Ivan Queiroz (@ivanqueiroz) com uma palestra fantástica sobre Spring Data.

No último sábado, 08/10, levamos para a Unifacs, com apoio da professora e coordenadora dos cursos de computação, Daniela Barreto Araujo, o III encontro do Java Bahia.

O nosso objetivo inicial é tentar fomentar entre os estudantes o senso de comunidade e falar um pouco sobre a plataforma Java. Felizmente, em nossos encontros, as pessoas que confirmam e aparecerem ficam até o fim, em sua grande maioria e isso é muito gratificante.

Esperamos que quem apareceu tenha gostado e quem ainda não pôde aparecer, apareça. Ainda levaremos até dezembro em outras universidades. Confirmadas, temos a Cairu (22/10) e Ucsal (novembro e dezembro) e estamos discutindo com a Uneb sobre a possibilidade de fazermos em novembro ou dezembro.

Acompanhem nosso blog e associem ao meetup do nosso grupo para serem notificados dos próximos eventos. Nos sigam no Twitter (@javabahia) e acompanhem nossas atividades.

No meetup, postamos as fotos dos últimos encontros ocorridos (Ftc Feira, Ruy Barbosa e Unifacs).

Uma vez que esse circuito entre as Universidades encerre, iremos planejar o ano de 2017 com novas palestras e eventos. Ficou interessado? Entre em contato conosco e participe.

quarta-feira, 5 de outubro de 2016

Tagged under: , , ,

III Encontro JavaBahia nas universidades 2016 - Unifacs 08/10/2016

Seguindo o roteiro de visitarmos as faculdades de Salvador e pelo feedback positivo que obtivemos dos estudantes e professores, estamos levando para Unifacs, no dia 08/10 o nosso encontro do Java Bahia. 

O evento será sediado no auditório da Unifacs (campus da Paralela) e será de 08:30 as 12:30 com a agenda abaixo:
  • Java User Group – O que é e como eu posso participar? - Jefferson Moreira
  • JPA de A à Z: Porque conhecer a JPA? - Mateus Malaquias
  • Carreira do desenvolvedor Java: O que eu preciso saber? - Antônio Lázaro
  • Spring Data - Ivan Queiroz
  • Encerramento - Neste momento temos um espaço aberto para você contribuir e falar o que quiser!!
O evento será aberto a comunidade, e as inscrições devem ser feitas via plataforma meetup. Mais informações no site do JavaBahia:
Contatos: 

P.S. - Ainda em outubro faremos o evento na Faculdade Cairu. Em novembro estamos fechando os próximos eventos (prováveis: Unime e Ucsal). Estamos aguardando outros retornos.