Questões de Concurso sobre JPA (Hibernate, etc.)

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
124 questões encontradas
Questões por página
20
Mais recentes
 

No contexto da evolução da arquitetura J2EE, posteriormente chamada de Java EE e Jakarta EE, os Entity Beans foram substituídos por


A

Java Persistence API.


B

Servlets.


C

Applets.


D

JavaScript.


E

JavaServer Faces.

Em um sistema corporativo desenvolvido em Java, a equipe precisa persistir entidades de domínio em um banco de dados relacional, utilizar uma implementação concreta para o Mapeamento Objeto-Relacional, manter histórico das alterações realizadas em determinadas entidades e controlar a evolução do esquema do banco de dados entre os ambientes de desenvolvimento, homologação e produção.


Com base nesse cenário, analise as seguintes afirmativas:


I. A Java Persistent API (JPA) define uma especificação para persistência objeto-relacional em aplicações Java, permitindo o mapeamento de classes e relacionamentos para estruturas de bancos relacionais.

II. O Hibernate pode atuar como implementação da JPA, fornecendo mecanismos concretos de ORM para persistência, consultas e sincronização entre objetos Java e tabelas relacionais.

III. O Hibernate Envers é utilizado para controlar migrações versionadas do esquema do banco de dados, enquanto o Flyway registra o histórico das alterações realizadas nas entidades persistentes.


Está correto o que se afirma em


A

I, apenas.


B

II, apenas.


C

I e II, apenas.


D

II e III, apenas.


E

I, II e III.

A Java Persistence API (JPA) é uma especificação do Jakarta EE (anteriormente Java EE) que define um modelo padrão para o mapeamento objeto-relacional (ORM) em aplicações Java.

Por meio de anotações como @Entity, @Table, @Id e @OneToMany, a JPA permite que o desenvolvedor manipule registros do banco de dados como objetos Java, abstraindo grande parte da complexidade do SQL e delegando a implementação concreta a providers como Hibernate, EclipseLink e OpenJPA.


Considere o seguinte trecho de código utilizando JPA:


Imagem associada para resolução da questão


Sobre o código apresentado, considerando as especificações da JPA e o comportamento padrão dos providers de persistência, assinale a afirmativa correta.


A

A anotação @GeneratedValue(strategy = GenerationType.IDENTITY) indica que o valor da chave primária será gerado automaticamente pelo banco de dados por meio de uma coluna auto-incremento, cabendo ao próprio banco — e não à aplicação — atribuir o valor do id no momento da inserção.


B

A anotação @Column(nullable = false) é responsável por criar, em tempo de execução, uma validação no nível da aplicação Java que lança uma exceção antes de qualquer interação com o banco de dados, tornando desnecessária a definição da constraint NOT NULL na coluna correspondente da tabela.


C

A estratégia FetchType.LAZY no relacionamento @OneToMany faz com que a lista de pedidos seja carregada integralmente junto com a entidade Cliente no momento da consulta inicial, antecipando todos os dados relacionados em uma única operação SQL.


D

A propriedade cascade = CascadeType.ALL indica que as operações de persistência realizadas na entidade Cliente serão propagadas apenas para a operação de remoção (REMOVE) dos pedidos associados, sem afetar operações como PERSIST e MERGE.


E

A anotação mappedBy = "cliente" indica que a entidade Cliente é a proprietária (owning side) do relacionamento, sendo responsável por manter a chave estrangeira em sua própria tabela no banco de dados.

Em uma aplicação que utiliza JPA 2.1 (ou superior), ao listar entidades Pedido, ocorre o problema do N+1 selects ao acessar a associação pedido.cliente mapeada como @ManyToOne(fetch = FetchType.LAZY). Para garantir que Cliente seja carregado na mesma consulta que busca Pedido, eliminando o N+1, o desenvolvedor deve:


A

Utilizar JOIN FETCH na consulta JPQL.


B

Alterar o relacionamento para FetchType.EAGER.


C

Utilizar uma consulta JPQL com JOIN para filtrar ou restringir os resultados.


D

Utilizar limitação de intervalo (setFirstResult / setMaxResults) na consulta JPQL.

Uma analista de dados está implementando uma solução de persistência de dados para um novo sistema de gerenciamento de documentos utilizando JPA 2.0. Para otimizar o desempenho e evitar o problema N+1, ela precisa garantir que as entidades relacionadas sejam carregadas de forma eficiente.


Para carregar as entidades via JPA 2.0 corretamente e mitigar o problema N+1 de forma eficiente, a analista deve:


A

utilizar a anotação @ManyToOne sem especificar a estratégia de carregamento, permitindo que o JPA decida a melhor abordagem;


B

implementar consultas JPQL manuais para carregar as entidades relacionadas, garantindo o controle total sobre o processo de carregamento;


C

utilizar a anotação @OneToMany com a estratégia FetchType.LAZY e utilizar JOIN FETCH nas consultas JPQL para carregar as entidades relacionadas de forma eficiente;


D

configurar o FetchType como EAGER em todos os relacionamentos @ManyToOne, garantindo que as entidades relacionadas sejam sempre carregadas junto com a entidade principal;


E

utilizar a anotação @LazyToOne(false) em relacionamentos @ManyToOne, a fim de carregar as entidades relacionadas apenas quando acessadas, evitando o carregamento antecipado.

No processo de modernização do sistema interno de gestão de contratos da empresa, a equipe de desenvolvimento precisa adotar uma tecnologia padrão para garantir a persistência dos dados de maneira consistente e eficiente.


Considerando a necessidade de integração com aplicações Java já existentes e o uso de boas práticas de mapeamento objeto-relacional, assinale a alternativa que possibilita a persistência de dados e o gerenciamento eficiente das informações.


A

JavaFX.


B

Servlets.


C

JSF (JavaServer Faces).


D

JPA (Java Persistence API).


E

EJB (Enterprise JavaBeans).

Considere uma arquitetura que utiliza o Hibernate 7.2/Jakarta Persistence (jakarta.persistence.InheritanceType). Pretende-se mapear três entidades: mamífero, cachorro e gato. As entidades cachorro e gato herdam de mamífero. O modelo de banco de dados para representar essas entidades deve ser construído de forma que exista uma tabela para cada entidade . As tabelas Cachorro e Gato devem fazer referência à tabela Mamífero.


Assinale a alternativa que apresenta a anotação CORRETA que deve ser utilizada.


A

@Inheritance(strategy = InheritanceType.JOINED)


B

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)


C

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)


D

@Inheritance(strategy = InheritanceType.SPECIALIZED_SUPERCLASS)

Uma equipe de desenvolvimento de uma prefeitura está projetando um sistema de gerenciamento de dados para atender às demandas de diferentes departamentos, utilizando o Spring Boot como framework principal. Para que o Hibernate seja corretamente integrado ao projeto Spring Boot, deve-se


A

configurar manualmente o mapeamento ORM diretamente no arquivo application.properties, desativando o uso de arquivos de mapeamento XML.


B

utilizar a anotação @Entity para definir as classes de modelo e configurar a dependência de Hibernate no arquivo pom.xml OU build.gradle, deixando o Spring Boot gerenciar automaticamente o Hibemate.


C

criar manualmente um arquivo hibernate. cfg.xml para configurar o Hibemale, sem a necessidade de qualquer integração com o Spring Boot.


D

configurar o Hibernate diretamente no código Java principal do projeto, criando um SessionFactory manualmente.


E

utilizar exclusivamente arquivos .properties para configurar as entidades, sem necessidade de anotação como @Entity nas classes de modelo.

Uma equipe de desenvolvimento está implementando uma aplicação Java com persistência de dados utilizando o Hibernate como Object Relational Mapping (ORM). Durante o desenvolvimento, a equipe precisa garantir a geração automática de tabelas no banco de dados com base nas entidades Java mapeadas. No arquivo XML de configuração do Hibernate, a propriedade que garante a geração automática do esquema de banco de dados durante o desenvolvimento é a


A

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect .Auto”/>


B

<property name="hibernate.create_sql" value="auto"/>


C

<property name="hibernate.hbm2ddl.auto" value="update"/>


D

<property name="hibernate.connection.url.auto” value="jdbc:mysql://localhost:3306/db"/>


E

<property name="hibernate.id.new_generator_mappings” value="auto”/>

O Hibernate é um ORM (Object/Relational Mapping) utilizado para facilitar a integração da aplicação com a base de dados relacional utilizada. Um dos recursos disponibilizados é o tipo de estratégia para a geração de identificadores (id). Marque a alternativa que contém o tipo de estratégia que engloba uma coluna com autoincremento.


A

GenerationType.UUID


B

GenerationType.AUTO


C

GenerationType.IDENTITY


D

GenerationType.SEQUENCE

O JPA é uma especificação da plataforma Java que define um padrão para mapeamento objeto-relacional (ORM) e gerenciamento de persistência de dados. No JPA, a forma padrão de realizar o mapeamento de objetos Java (POJOs) para tabelas de bancos de dados relacionais é por meio de


A

anotações como @Database, @Primary, @Relation e @Field.


B

configurações XML como persistence.xml, entity.xml e mapping.xml.


C

anotações como @Entity, @Id, @Table e @Column.


D

interfaces como EntityFactory, QueryBuilder e PersistenceUnit.


E

classes como HibernateSession, EntityManagerFactory e DataMapper.

Associe as duas colunas, relacionando as tecnologias à sua definição.


1. JDBC.

2. JTA.

3. Hibernate.

4. JSF.


( ) Conjunto de APls para gerenciar componentes de interface do usuário, eventos, validação de entrada, navegação de página, internacionalização e acessibilidade.

( ) É uma solução de Mapeamento Objeto/Relacional para ambientes Java, que facilita o mapeamento de objetos Java para bancos de dados relacionais e vice-versa.

( ) Fornece acesso universal aos dados a partir da linguagem de programação Java. é possível acessar virtualmente qualquer fonte de dados, desde bancos de dados relacionais até planilhas e arquivos de texto simples.

( ) Especifica interfaces de alto nível entre um gerenciador de transações e as partes envolvidas em um sistema de transações distribuídas.


A sequência CORRETA dessa associação é:


A

(4) (3) (1) (2).


B

(2) (1) (3) (4).


C

(3) (4) (2) (1).


D

(2) (4) (3) (1).


E

(4) (1) (3) (2).

Um analista cria a entidade Processo para um sistema de um tribunal, persistindo processos judiciais em um banco relacional, com número do processo gerado automaticamente, tipo de ação não nulo e relacionamento N:1 com a entidade Vara (unidade judicial). Nesse contexto, o mapeamento correto da entidade Processo é @Entity para indicar que Processo é uma entidade,


A

@Id e @GeneratedValue(strategy = GenerationType.SEQUENCE) para o atributo número do processo, @Column(nullable=true) para tipo de ação, @ManyToOne @JoinColumn(name = "processo_id", nullable = false) para o atributo que representa a vara.


B

@Column(nullable=false) para o atributo que representa o tipo de ação, @ManyToOne(mappedBy = "vara") e @JoinColumn(name = "numero", nullable = false) para o atributo que representa a vara.


C

@Id e @GeneratedValue(strategy = GenerationType.IDENTITY) para o atributo número do processo, @Column(nullable=false) para o atributo que representa o tipo de ação, @ManyToOne e @JoinColumn(name = "vara_id", nullable = false) para o atributo que representa a vara.


D

@Id e @GeneratedValue(type = GenerationType.IDENTITY) para o atributo número do processo, @Column(nullable=false) para tipo de ação, @OneToOne @JoinColumn(name = "vara_id", nullable = true) para o atributo que representa a vara.


E

@Column(nullable=false) para tipo de ação, @ManyToOne e @JoinColumn(id = "vara_id", nullable = false) para o atributo que representa a vara.

Hibernate 7.0 representa um marco significativo na evolução do Hibernate ORM com foco especial na sua nova especificação para repositórios.


O Hibernate Data Repositories é uma implementação baseado no


A

Java EE8.


B

JBoss 3.0.


C

JQuery Data.


D

Jakarta Data.


E

Jakarta API 2.0.

Hibernate 5.x introduziu suporte nativo para as classes da API de Data e Hora do Java 8 (java.time), como


A

NodaTime, ZonedDateTime e DurationTime.


B

Year, Month, Day e Instant.


C

LocalDate, LocalTime e LocalDateTime.


D

DateTime, TimeStamp e DateInterval.


E

DateTimeZone, DateTimeImmutable e DateTimeOffset.

Acerca de Hibernate Envers, julgue o item a seguir.


9 O módulo Envers é um modelo do Hibernate cujo objetivo é fornecer uma solução de auditoria para classes de entidades.


C

Certo


E

Errado

Um Tribunal Regional do Trabalho está desenvolvendo um sistema de gestão de processos judiciais que inclui um módulo de auditoria para rastrear mudanças nos registros dos processos. É essencial que qualquer alteração nos dados dos processos judiciais (por exemplo, petições, decisões, movimentações) seja auditada para garantir a integridade e a transparência. Um Analista de TI decide utilizar Hibemate Envers para atender aos requisitos desse módulo de auditoria e, para isso, deve


A

configurar Hibemate Envers para criar uma tabela de auditoria que registre todas as alterações em entidades anotadas, incluindo quem fez a alteração e quando foi feita.


B

usar Hibernate Envers para criar automaticamente backups diários de todas as tabelas do banco de dados.


C

utilizar Hibemate Envers para migrar dados auditáveis entre diferentes esquemas de banco de dados de forma transparente.


D

implementar Hibernate Envers para validar os dados de auditoria dos processos judiciais antes de serem inseridos no banco


E

configurar Hibemate Envers para enviar notificações à auditoria, por e-mail, a cada alteração de dados no banco de dados.

Um experiente time técnico, com especialistas em desenvolvimento de softwares, precisa gerenciar tanto as alterações no schema do banco de dados quanto o histórico de auditoria das mudanças nos dados de entidades críticas do sistema. Para isso, estão avaliando o uso de Flyway e Hibernate Envers. Compreendendo o complexo cenário, analise as proposições abaixo e o relacionamento entre elas.


Asserção: O Flyway e o Hibernate Envers são ferramentas complementares que, quando usadas em conjunto, permitem a gestão do versionamento do schema do banco de dados e a auditoria de alterações nos dados das entidades, respectivamente.


PORQUE


Razão: O Flyway é uma ferramenta de migração de banco de dados que executa scripts SQL versionados, enquanto o Hibernate Envers é um módulo do Hibernate que, por meio de anotações e interceptores, rastreia automaticamente as alterações nos dados das entidades persistidas, armazenando um histórico de revisões.


Diante do exposto, assinale a alternativa correta.


A

A asserção é uma proposição verdadeira, e a razão é uma justificativa correta da asserção


B

A asserção é uma proposição verdadeira, mas a razão não é uma justificativa correta da asserção


C

A asserção é uma proposição falsa, e a razão é uma justificativa correta da asserção


D

Ambas as proposições são proposições falsas

Considere o bloco de código a seguir, que utiliza o Hibernate 5 ou superior.

@OneToMany{mappedBy = "usuario", fetch = FetchType . EAGER)

priva.te List<Pedido> pedidos;

Nesse exemplo, fetch = FetchType.EAGER indica que


A

o Hibernate recuperará apenas um pedido relacionado ao usuário especificado e, caso se deseje a lista completa de pedidos do usuário, deve-se utilizar FetchType . ALL ao invés de FetchType . EAGER.


B

quando um usuario for recuperado do banco de dados, será estabelecida uma relação um-para-muitos com a entidade Pedido, recuperando, mas não carregando, todos os pedidos associados a um usuário específico.


C

o Hibernate não carregará a coleção pedidos imediatamente quando o objeto Usuario for recuperado do banco de dados. Em vez disso, a lista de pedidos só será carregada quando for explicitamente acessada no código.


D

quando um Usuario for recuperado do banco, todos os pedidos relacionados serão carregados imediatamente, independentemente de eles serem necessários ou nao.


E

quando um Pedido for recuperado do banco, será estabelecida uma relação um-para-muitos com a entidade Usuario, recuperando todos os usuários associados a um pedido específico.

Um desenvolvedor precisa criar uma aplicação empresarial que utilize as especificações da plataforma Java EE. Considerando os itens abaixo:


1. Persistência de dados em um banco relacional.

2. Interface gráfica web rica e baseada em componentes.

3. Gerenciamento de transações distribuídas em múltiplos recursos.

4. Comunicação assíncrona entre sistemas.

Quais especificações devem ser utilizadas para atender aos requisitos descritos, respectivamente?


A

JPA para persistência, JSF para interface gráfica, JTA para transações e JMS para comunicação assíncrona.


B

EJB para persistência, JSF para interface gráfica, JPA para transações e JMS para comunicação assíncrona.


C

JTA para persistência, EJB para interface gráfica, JSF para transações e JPA para comunicação assíncrona.


D

JMS para persistência, JPA para interface gráfica, EJB para transações e JSF para comunicação assíncrona.

 
 
Gerar simulado