Utilizar o Spring Framework associado a outras ferramentas t...

Próximas questões
Com base no mesmo assunto
Q1307509 Programação

Utilizar o Spring Framework associado a outras ferramentas torna a codificação em Java mais ágil. O código a seguir demonstra uma injeção de dependência no código de um DAO genérico.


Imagem associada para resolução da questão


A anotação do Spring que o desenvolvedor deverá inserir na linha 9 do código, para que a injeção de dependência funcione corretamente, é

Alternativas

Comentários

Veja os comentários dos nossos alunos

A

No Spring, para marcar uma injeção de dependência dentro da sua classe, você utiliza a anotação @Autowired.

@Autowired

Marca um construtor, campo, método setter ou método de configuração para ser conectado automaticamente pelos recursos de injeção de dependência do Spring. Esta é uma alternativa à anotação JSR-330 Inject, adicionando semântica obrigatória versus opcional. [GABARITO]

@Repository

Anota classes na camada de persistência, que atuará como um repositório de banco de dados.

@Component

É um estereótipo genérico para qualquer componente gerenciado pelo Spring. Declara uma classe com esta anotação e assim ela será gerenciada pelo container de IoC/DI do Spring. Assim, a classe será instanciada e registrada no container e enfim pronta para uso.

@Service

Anota classes na camada de serviço.

a-

 Autowired

Marks a constructor, field, setter method, or config method as to be autowired by Spring's dependency injection facilities. This is an alternative to the JSR-330 Inject annotation, adding required-vs-optional semantics.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html

Este trecho de código demonstra uma classe DAO (Data Access Object) genérica em uma aplicação Spring Boot que utiliza Hibernate para interações com o banco de dados. Vamos analisar cada termo:

1. import org.hibernate.Session;

Esta linha importa a classe Session do pacote org.hibernate. Um objeto Session representa uma única unidade de trabalho com o banco de dados no Hibernate. É utilizado para realizar operações no banco de dados, como salvar, atualizar e excluir dados.

2. import org.hibernate.SessionFactory;

Esta linha importa a classe SessionFactory do pacote org.hibernate. Um objeto SessionFactory é uma fábrica que cria objetos Session. É configurado com detalhes sobre a conexão com o banco de dados e mapeamentos entre classes Java e tabelas do banco de dados.

3. @Autowired

Esta anotação é do framework Spring. Ela marca a variável membro sessionFactory para injeção automática de dependência. Isso significa que o Spring encontrará automaticamente um bean SessionFactory configurado no contexto da aplicação e o injetará nesta classe.

4. private SessionFactory sessionFactory;

Esta linha declara uma variável membro privada chamada sessionFactory do tipo SessionFactory. Esta variável armazenará o objeto SessionFactory injetado pelo Spring.

5. protected Session getSession() {

Esta linha declara um método protegido chamado getSession que retorna um objeto Session.

return sessionFactory.getCurrentSession();

Esta linha recupera o objeto Session atual do SessionFactory. O Hibernate gerencia um contexto de sessão por thread, o que significa que a sessão atual associada ao thread atual é recuperada.

6. GenericDAO<T>:

Isso indica que a classe GenericDAO é uma classe genérica. O <T> representa um parâmetro de tipo genérico que pode ser usado para especificar o tipo de objeto com o qual este DAO trabalhará. Isso permite que a classe seja genérica e trabalhe com diversos modelos de dados, especificando o tipo na instanciação.

Funcionalidade Geral:

Esta classe DAO genérica fornece uma base para interagir com um banco de dados usando Hibernate em uma aplicação Spring Boot. Ela injeta o SessionFactory e oferece um método getSession para recuperar o objeto Session atual para operações no banco de dados em objetos do tipo <T>. Essa abordagem promove a reutilização de código e simplifica a lógica de acesso a dados.

Fonte: Gemini

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo