EX297

Retired - Red Hat Certificate of Expertise in Persistence exam

Você está visualizando as informações para:

O exame Red Hat Certificate of Expertise in Persistence testa se os candidatos estão prontos para as responsabilidades do mundo real de criar e fazer a manutenção de aplicativos Java™ que utilizam o Java Persistence API (JPA) com o JBoss ® Hibernate®.

O exame Red Hat® Certificate of Expertise in Persistence demonstra a capacidade de um indivíduo de realizar tarefas reais associadas ao uso do Java™ Persistence API (JPA) com o JBoss Hibernate. O JPA é uma estrutura de linguagem de programação Java para gerenciamento de dados relacionais, e o Hibernate é um serviço de persistência de objeto relacional de alto desempenho e consulta que implementa o JPA.

Familiarize-se com as ferramentas, o ambiente e os requisitos de um exame Red Hat JBoss Certified Developer.

Em preparação

A Red Hat recomenda que os candidatos para este exame obtenham o Red Hat Certified JBoss Developer (RHCJD) antes de tentar o exame, mas isso não é obrigatório.

Pontos de estudo para o exame

Para ajudar você a se preparar, os objetivos do exame realçam as áreas de atuação que podem ser incluídas no exame. A Red Hat se reserva o direito de incluir, modificar e remover objetivos do exame. Essas alterações serão divulgadas com antecedência.

Tarefas do exame

Os candidatos do exame Red Hat Certificate of Expertise in Persistence devem estar aptos a executar as tarefas a seguir usando o JPA com Hibernate. Para auxiliar no estudo, incluímos uma lista de referências recomendadas dessas atividades.

Configurar o JPA/Hibernate
  • Configurar propriedades do PersistenceUnit, incluindo:
    • Local dos arquivos de configuração.
    • Detalhes de configuração específicos do Java EE.
    • Detalhes de configuração específicos do Java SE.
    • Detalhes de configuração específicos do Hibernate.
  • Conectar a um PersistenceUnit por um aplicativo do Java SE.
  • Conectar a um PersistenceUnit por um aplicativo do Java EE.
  • Substituir valores de propriedades predefinidas do PersistenceUnit.
Mapear uma simples tabela ou objeto
  • Entender o comportamento dos geradores de ID, incluindo como e quando o valor é gerado.
  • Entender o mapeamento de uma chave primária, incluindo:
    • Usar chaves geradas.
    • Mapear chaves corporativas simples.
    • Mapear chaves compostas.
  • Entender a identidade do objeto e a equivalência corporativa.
  • Configurar informações específicas do banco de dados, como nome de tabela, nome de coluna, largura de coluna e
    atributos de coluna (nullable, unique, type etc.).
  • Converter um objeto Java existente em um objeto persistente usando o JPA/Hibernate.
  • Mapear tipos de dados JPA conforme os tipos de bancos de dados correspondentes.
  • Com uma tabela de banco de dados existente, criar um novo objeto persistente do Java para mapear a tabela.
  • Entender como e quando usar lazy ou eager loads.
  • Entender e usar as melhores estratégias de mapeamento para coleções e tipos de valores.
  • Trabalhar com propriedades específicas do modelo Java/object e comportamentos em um objeto persistente. Isso inclui:
    • Serialization.
    • Propriedades temporárias.
    • Propriedades geradas e calculadas.
    • Propriedades imutáveis.
    • Tipos de valor
    • Propriedades codependentes (ou seja, quando os valores válidos da propriedade dependem do valor de outra
      propriedade).
Mapear relacionamentos de objetos com o JPA/Hibernate
  • Entender como mapear relacionamentos, incluindo, mas não somente:
    • Relacionamentos de valor (por exemplo, objeto de detalhes has-a).
    • Relacionamentos pai/filho.
    • Relacionamentos um para um (unidirecional e bidirecional).
    • Relacionamentos um para muitos (unidirecional e bidirecional).
    • Relacionamentos muitos para muitos (unidirecional e bidirecional).
  • Entender os comportamentos padrões de mapeamento, incluindo, mas não somente:
    • Nomes de chaves externas.
    • Nomes de tabelas de associação.
  • Entender o uso das chaves externas e tabelas conjuntas ao criar relacionamentos.
  • Entender como mapear uma chave primária composta com base no relacionamento.
  • Entender as coleções do JPA/Hibernate (conjuntos, listas de mapas e recipientes) e como mapeá-las para relacionamentos de objetos e
    tabelas.
  • Entender o impacto do desempenho nas diferentes coleções.
  • Entender como e quando usar lazy e eager loads, incluindo o impacto do desempenho e do código
    das duas.
  • Com um conjunto existente de tabelas e relacionamentos, criar um gráfico de objeto persistente do Java que se associe ao
    banco de dados.
  • Mapear um modelo de objeto existente, incluindo diversas associações, em um repositório de persistência.
  • Determinar as melhores estratégias de carregamento de determinado processo corporativo.
Mapear relacionamentos de objetos hierárquicos com o JPA/Hibernate
  • Entender como representar diferentes hierarquias de objetos usando o JPA/Hibernate.
  • Converter um objeto de hierarquia Java existente em um objeto persistente usando o JPA/Hibernate.
  • Representar um conjunto existente de relacionamentos de tabela como uma hierarquia de objetos (por exemplo,
    contas de poupança, cartão de crédito e conta de empréstimo).
  • Entender as consultas e associações polimórficas.
  • Entender os benefícios e as limitações das diferentes estratégias de herança.
  • Analisar e determinar as melhores representações de bancos de dados para diferentes hierarquias de objeto.
Entender o comportamento transacional (ACID)
  • Adquirir e usar um contexto de transação em:
    • Java EE/CMT.
    • Java EE/BMT.
    • Java SE usando APIs JPA.
  • Entender como o contexto de persistência é ligado à transação no Java EE.
  • Entender a propagação do contexto transacional com EJB3.
  • Entender as consequências de uma reversão transacional no contexto da persistência.
  • Entender os riscos da concomitância transacional.
  • Avaliar a perda/corrompimento dos dados em relação ao equilíbrio do desempenho.
Recuperar objetos persistentes
  • Entender as estratégias de carga do JPA/Hiibernate:
    • Lazy load.
    • Subselect load.
    • Batch load.
  • Entender e usar opções de consulta avançadas:
    • HQL/JPA QL.
    • APIs de critérios.
    • Consultas nativas (SQL).
  • Usar o recurso runtime eager fetching.
  • Usar parâmetros nomeados.
  • Antecipar e evitar LazyInitializationException.
  • Analisar e melhorar o desempenho do JPA/Hibernate.
  • Entender e usar os recursos estendidos de bloqueio otimista do JPA e bloqueio pessimista do Hibernate.
Manipular objetos persistentes
  • Entender estados das entidades, como:
    • temporário.
    • persistente.
    • conectado.
    • desconectado.
    • removido.
  • Entender como alterar o estado de uma entidade/gráfico usando APIs JPA.
  • Entender o ciclo de vida do contexto de persistência e seu impacto sobre as entidades gerenciadas.
  • Aplicar recursos de batch do JPA/Hibernate:
    • Padrões de uso da API.
    • Consultas DML.
  • Determinar e aplicar as configurações corretas de implementação e cascata para manipular um gráfico de objeto.
  • Avaliar quando usar o batch.

O que você precisa saber

Documentação e treinamento

O acesso a documentos durante o exame será limitado à documentação oficial do JBoss Enterprise Application Platform da versão usada no teste e arquivos de exemplo ou outros documentos fornecidos com o produto. Não vamos proibir nada que seja fornecido normalmente.

Você não terá acesso ao site jboss.org ou a wikis hibernate.org. Embora sejam recursos úteis e possam conter muito material pertinente ao exame, eles acabam sendo inadequados durante o exame devido a seu formato. Queremos testar você e não as pessoas que estão lendo e atualizando o wiki.

Não é permitida a entrada de quaisquer documentos impressos ou eletrônicos. A proibição também veta anotações, livros e outros tipos de material. O acesso à Internet também será controlado rigorosamente. Lembre-se disso ao estudar.

Ambiente

Você irá trabalhar em um sistema Red Hat Enterprise Linux® 5.4 durante o exame, portanto, será útil ter experiência anterior com Linux ou UNIX. Não é necessária tanta experiência com Linux, já que a finalidade do exame é testar seu conhecimento em JPA com Hibernate, não suas habilidades com sistemas operacionais específicos. Você terá um ambiente de desktop completo no qual trabalhar e nós forneceremos uma lista de comandos básicos para consulta além de páginas principais e outros documentos fornecidos com o Red Hat Enterprise Linux.

O Fedora é uma alternativa de ampla disponibilidade para você praticar sua habilidade com o Linux. Está disponível uma versão Live CD com a qual você pode trabalhar no Fedora sem precisar instalá-lo no seu computador. Embora ele não seja exatamente igual ao ambiente do Red Hat Enterprise Linux, é parecido o suficiente para o nível de familiaridade necessário.

Download de avaliação do exame

Familiarize-se com as ferramentas, o ambiente e os requisitos de um exame Red Hat JBoss Certified Developer.

Baixe o documento de visão geral
Faça download da avaliação do exame

Formato do exame

O exame Red Hat Certificate of Expertise in Persistence é 100% baseado em desempenho—os candidatos demonstram seus conhecimentos realizando tarefas, não apenas divulgando fatos. A maioria dos exames de certificação de TI faz uma série de perguntas que você responde selecionando as opções A, B, C, D, ou a pior de todas: Escolha todas as respostas corretas. Perguntas desse tipo não aparecem no exame Red Hat Certificate of Expertise in Persistence. Na verdade, não há pergunta alguma. Em vez delas, você terá à sua frente um ambiente real no qual terá que executar tarefas reais. Por exemplo, podemos pedir que você crie e mantenha uma associação persistente, em vez de fazer uma série de perguntas sobre as anotações de mapeamento do JPA. Portanto, aconselhamos os candidatos a desconfiar dos sites de dicas rápidas (os “brain dumps”) e afins. A melhor e única fonte de informações sobre esse exame é este documento.

O exame Red Hat Certificate of Expertise in Persistence tem duração de 4 horas. É preciso um tempo antes da hora de início do exame para confirmação de identificação e coletar informações.

Ambiente do exame

Ferramentas de desenvolvimento

Além do ambiente de desktop, forneceremos uma cópia instalada e configurada do JBoss Developer Studio 3 (JBDS). Não se trata de um exame para o JBDS e não esperamos que você conheça ou use o JBDS para realizar as tarefas do exame. No entanto, o JBDS é uma excelente ferramenta para desenvolvimento e manutenção de aplicativos JPA/Hibernate, de modo que ter alguma experiência e qualificação no uso do JBDS, certamente, será útil na hora do exame. Se você não tem acesso a uma cópia com suporte do JBDS, pode baixar uma versão gratuita. Se você ainda não é cadastrado na Red Hat, terá que criar uma conta grátis. Se não quiser fazer um cadastro na Red Hat para fazer o download gratuito, uma distribuição Eclipse padrão com o plug-in JBoss Tools 4 será suficiente para praticar para o exame.

Os projetos no exame foram criados com o Maven. Se não quiser usar o JBDS, você pode usar um editor de textos comum (como gedit ou vi), a linha de comando e o Maven. O exame é feito em ambiente fechado, e o Maven roda em modo off-line. Não é possível usar repositórios do Maven ou plug-ins que já não tenham sido importados para o ambiente local.

Diretório de trabalho

Quando você começar o exame, o espaço de trabalho padrão do JBDS terá 1 ou mais diretórios de projeto que devem ser usados durante o exame. Você não precisa usar o JBDS para desenvolvimento, mas deve usar o diretório do espaço de trabalho padrão e os diretórios fornecidos em todas as tarefas. Ou seja, todos os códigos e recursos devem ser desenvolvidos na estrutura dos diretórios fornecidos e serem coerentes com ela.

Padrões de codificação

Este é um exame prático, e você terá que escrever o código para concluir as tarefas. Empresas diferentes têm padrões de codificação distintos e, como no ambiente real, você terá que seguir os padrões de codificação locais. Abaixo estão algumas informações sobre os padrões de codificação do exame que podem ajudar na sua preparação. Essas informações também são fornecidas durante o exame. Para o exame, será mais fácil se você imaginar que é um desenvolvedor de JPA/Hibernate que acabou de ser contratado e foi designado para concluir um projeto. Infelizmente, o desenvolvedor original precisou abandonar o projeto e não há como contatá-lo. Você deve assumir de onde ele parou o código e concluir o máximo que conseguir no tempo disponível.

O código foi razoavelmente bem documentado e há vários "A fazer" em todo o código que dão uma indicação do que precisa ser feito. Observe que o Javadoc e TODOs não são suficientes; você precisará ler as descrições das tarefas e entender o que deve ser feito antes de trabalhar com um TODO. Se você achar que existe alguma discordância entre o texto da tarefa, os diagramas de UML/PDM e o Javadoc/TODO, sempre siga a descrição da tarefa.

Seguem alguns pontos a lembrar enquanto você estiver trabalhando:

  • A formatação do código não é importante. Se você usa tabulações ou espaços e como posiciona chaves não afetarão a avaliação do seu trabalho.
  • Você deve mapear classes usando arquivos XML, anotações dos campos ou anotações de propriedades, independentemente do que usar. O código existente usa um pequeno número de anotações de campo, mas você pode mudar conforme o estilo que preferir para o mapeamento.
  • Muitas das classes estão incomumente organizadas; campos e métodos relacionados estão agrupados. Isso não é algo muito corriqueiro nem é uma prática recomendada. Foi feito para facilitar seu trabalho em um item único sem ter que ficar procurando no código inteiro os campos e métodos relacionados. Sinta-se à vontade para ordenar os membros das classes se quiser usar uma estrutura de código mais normal. Dica: No JBDS, o marcador azul TODO que aparece à direita da janela do editor e a lista de propriedades no modo de exibição Outline são muito úteis para uma rápida navegação nessas classes.
  • Diferente do mundo real, comentários e mensagens de exceção não são importantes. O exame é marcado para computador, de modo que comentários e mensagem são completamente ignorados.
  • A qualidade do código e as práticas recomendadas são importantes. Você deve sempre aplicar as práticas recomendadas, bem como trabalhar considerando que práticas ruins ou ineficientes serão invalidadas. Por exemplo, é considerada uma prática recomendada do Java jamais expor publicamente membros de campo, portanto, você deve sempre usar os getters e setters padrão do JavaBeans nas propriedades de objeto.
  • O projeto do cenário do exame foi criado em conjunto com outros aplicativos de outros departamentos. Salvo quando indicado explicitamente na descrição da tarefa ou em um A fazer no código, não altere a subscrição de qualquer método existente. A única exceção a essa regra é que você pode, e deve, tornar a subscrição mais específica (ou seja, usar uma subclasse e/ou genérico específico) se apropriado. Por exemplo, você deve substituir Collection{cke_protected}{C}%3C!%2D%2D%3F%2D%2D%3E por List onde necessário.
  • Você pode adicionar campos, propriedades e métodos conforme a necessidade.
  • Já que o projeto é voltado para as entidades persistentes e você não tem informação sobre a camada de controlador/serviço, espera-se que você codifique as entidades persistentes de maneira defensiva. Ou seja, seus métodos de entidade devem tentar impedir que a lógica corporativa destrua a consistência dos objetos. Por exemplo, um setter de uma propriedade nullable deve jogar um NullPointerException se for passado um valor nulo.
  • A menos que informado de forma diferente, todas as entidades devem usar as chaves primárias do banco de dados, que são automaticamente geradas pelo mecanismo de persistência.
  • Se um método precisar originar uma exceção devido a algum problema interno, sempre use um RuntimeException; não crie uma exceção específica para a empresa. Por exemplo, você pode ainda usar IllegalArgumentException se o problema for um argumento inválido para um método. Você pode usar IllegalStateException se o problema for uma inconsistência no estado do modelo do objeto ou repositório de persistência. E, é claro, você pode usar NullPointerException sempre que for apropriado. A menos que informado explicitamente, não use os recursos de persistência transitiva do JPA para propagar alterações automaticamente nas entidades associadas em um gráfico de objetos. Por experiência, sabemos que muitos desenvolvedores corporativos se confundem com esse recurso, além de que ele pode causar problemas de desempenho e confiabilidade quando usado indevidamente. Um aviso final: não há como validar seu trabalho se ele não for compilado ou não for executado corretamente. Particularmente, uma associação persistente quebrada pode fazer com que as ações de persistência falhem. É melhor avisar sobre uma associação difícil do que correr o risco de fazê-la interferir em outras associações que funcionam. Os projetos de teste incluem boas opções de testes JUnit. Recomendamos que você execute todo o conjunto depois de concluir uma tarefa. Observe, entretanto, que os testes JUnit inclusos não são o exame e fazer com que seu código passe não necessariamente significa que seu trabalho ganha crédito total.

Pontuações e Relatórios

As pontuações oficiais para exames provêm exclusivamente da Central de Certificações da Red Hat. A Red Hat não autoriza os examinadores ou parceiros de treinamento a relatarem os resultados diretamente aos candidatos. Os resultados são divulgados em até 3 dias úteis (EUA).

Os resultados do exame são relatados como pontuações de seção. A Red Hat não divulga o desempenho em itens individuais, nem fornecerá informações adicionais sob solicitação.

Público e pré-requisitos

O Certificado de Especialização da Red Hat em Persistence destina-se a:

  • Desenvolvedores e arquitetos experientes de aplicativos Java.
  • Desenvolvedores de componentes e bancos de dados corporativos.

Pré-requisitos para este exame

  • Ter familiaridade no trabalho em um ambiente Red Hat Enterprise Linux.
  • Revisar os objetivos do exame Red Hat Certificate of Expertise in Persistence (EX297).