Gostaria de saber qual o propósito dessas palavras chave de java e se possível q se cite algum exemplo simples.
Um objeto é dito transiente quando não tem representação no banco de dados e nem o EntityManager o conhece. Exemplo:
Cliente c = new Cliente();
Aqui, qualquer mudança no objeto referido por c não gerará nenhum tipo de insert ou update no banco de dados.
O oposto é quando o objeto existe no banco de dados e o EntityManager em questão possui uma referência para ele, essa entidade está managed, gerenciada pelo EntityManager. Considere em uma referência a um EntityManager no seguinte exemplo:
Cliente c = new Cliente(); // transiente
em.persist©; // gerenciado
Mais detalhes acesse http://blog.caelum.com.br/2006/11/23/entidades-managed-transient-e-detached-no-hibernate-e-jpa/
Ainda não ficou claro o uso da palavra chave transient. Toda essa manipulação de BD sofre alguma alteção qd se utliza a palavra chave transient na declaração de uma variável???
E volatile pra q serve??
flw
aproveitando o tópico, pra q serve essa outra palavra chave: strictfp???
Class Teste {
transient String campo;
}
tudo que é marcado como transient não pode ser serializado, ou seja, não será salvo em disco (seja em bd ou em arquivo).
volatile é o contrário de synchronized, ou seja uma varialvel volatile pode ser acessada por varias threads simultaneas.
O strictfp força todos os métodos a aderirem as regras IEE754, tornando possível saber exatamente como números float e double irão se comportar, de forma independente da plataforma.
Olá …deixa eu tentar te ajudar …
Primeiro é responde o propósito das palavras chaves que existe na linguagem java. Elas são palavras reservadas para uso da linguagem, na qual o programador não deve fazer uso … e também existe algumas palavras como const e goto que não é usada na linguagem mas mesmo assim elas são reservadas … é uma listinha básica de 50 palavras.
Algumas palavras tem caracteristicas específicas … então vou ajudar a vc respondendo essas que você tem dúvda…
Strictfp essa palavra é um modificador, ele força os pontos flutuantes a aderirem o padrão IEEE 754. E podem ser usado pode tanto para métodos como em classes, mas nunca deve ser usado em variáveis.
Transient esse modificador nosso amigo mirts deu um exemplo de um uso prático, mas significa que você estar informado a JVM para ignorar esta variável quando você for serializar o objeto que a contém. Procure saber sobre serialização que você entenderá sobre transient.
Volatile o modificador garante que o atributo vai ser sempre lido e escrito diretamente da memória principal, evitando que este tenha valores diferentes em duas threads. Além disso, é garantido que a ordem das operações sobre estes atributos não será alterada. E ele só é aplicado a variáveis de instancia.
Acho que é isso … espero que essas informações ajude
Faloww
quando vc estudar serialização vai la transient… o valatile… sei que usado para variaveis de instancia porem ainda nao estudei nenhuma assunto em j2se que aborda esse modificador…
transient apenas ignora uma variavel de instancia na serialização do objeto, qdo falo serialização é que vc deseja salvar o estado do seu objeto para depois usar aquele valor que foi salvo…
as vezes é complicado de explicar a essencia de um modificador se vc nao viu serialização…
Vlw aew pessoal. Já usei sim serialização, mas bem superficialmente. Com oq o silva.fernandes disse deu pra entender legal o o transient e as demais palavras reservadas. Essa semana dando uma olhada justamente numa tabela dessas com todas as palavras reservadas encontrei essas três q n sabia o propósito, daí procurei a costumeira ajuda do guj. Vlw pessoal.
Não é por aí.
A execuçãod e uma thread pode fazer cache local de atributos e variáveis para melhor performance. Ao declarar como volatile você está dando a dica a JVM de que aquela variavel vai ser alterada por varias threads frequentemente, entao não é bom fazer cache do contrário terá resultados errados.
Synchronized cria um lock na execução de um código e este lock pode utilizar volatile.