Questão nº 41
Questão de Tecnologia da Informação · FCC TRT22 2022 (nº 41)
Considere a configuração abaixo, presente em um arquivo de configuração de persistência de uma aplicação que utiliza JPA com o provedor de persistência Hibernate.
`<properties>`
`<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />`
`<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />`
`<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/teste" />`
`<property name="javax.persistence.jdbc.user" value="postgres" />`
`<property name="javax.persistence.jdbc.password" value="pgadmin" />`
`</properties>`
Se a aplicação não usasse Mapeamento Objeto-Relacional, a leitura e o registro do driver teriam que ser realizados por meio da instrução Java
- AClass.forName("org.postgresql.Driver"); (alternativa correta)
- BDriverManager.getDriver("org.postgresql.Driver");
- CDriver.getStatement("org.postgresql.Driver");
- DSQLDriver.getConnection("org.postgresql.Driver");
- EClass.getDriver("org.postgresql.Driver");
Resposta comentada
Gabarito Alternativa A
Quando você precisa conectar seu programa Java a um banco de dados sem usar ferramentas como JPA/Hibernate, é fundamental primeiro carregar o driver (um "tradutor" específico para aquele banco) na memória para que o Java saiba como se comunicar com ele.
(A) Correta: Esta instrução carrega a classe do driver (`org.postgresql.Driver`) na memória. Ao ser carregada, a classe executa seu bloco estático, que automaticamente registra o driver junto ao `DriverManager`, tornando-o disponível para estabelecer conexões.
(B) Incorreta: `DriverManager.getDriver()` é usado para obter um driver que já foi carregado e registrado, com base em uma URL JDBC, e não para carregar ou registrar o driver pela primeira vez. A armadilha aqui é que o `DriverManager` é central para JDBC, mas este método não realiza o carregamento inicial.
(C) Incorreta: A interface `java.sql.Driver` não possui um método estático `getStatement()`. `Statement` é obtido a partir de um objeto `Connection`.
(D) Incorreta: Não existe uma classe padrão `SQLDriver` na API JDBC. A classe correta para gerenciar conexões é `java.sql.DriverManager`.
(E) Incorreta: A classe `java.lang.Class` não possui um método estático `getDriver()`.
Fonte: FCC TRT22 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.