No Hibernate, caso o nome da classe seja diferente do nome ...

Próximas questões
Com base no mesmo assunto
Q314400 Programação
A respeito dos frameworks de desenvolvimento Java, julgue os itens subsecutivos.

No Hibernate, caso o nome da classe seja diferente do nome da tabela mapeada, é necessário informar, na anotação @Table, o nome da tabela, por meio do atributo name.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C (certo)

O Hibernate é um dos frameworks de persistência mais populares no ecossistema Java, e ele facilita a interação entre o nosso código Java e os bancos de dados relacionais através do que chamamos de ORM (Object-Relational Mapping). O mapeamento objeto-relacional é uma técnica que permite que as tabelas do banco de dados sejam representadas como classes em Java, e as linhas dessas tabelas como instâncias dessas classes.

Quando estamos trabalhando com Hibernate, as anotações são frequentemente utilizadas para definir como esse mapeamento deve ser feito. Uma delas é a @Table, que especifica a tabela que está sendo mapeada para a entidade. Se o nome da tabela no banco de dados for diferente do nome da classe em Java, deveremos utilizar o atributo name dentro da anotação @Table para explicar ao Hibernate o nome correto da tabela. Por exemplo:


@Entity
@Table(name="nome_da_tabela")
public class NomeDaClasse {
    // ...
}

Nesse exemplo, a anotação @Table(name="nome_da_tabela") indica que a classe NomeDaClasse deve ser mapeada para a tabela chamada "nome_da_tabela" no banco de dados. Isso é necessário para garantir que o Hibernate possa realizar as operações de banco de dados corretamente, associando a classe com a tabela apropriada.

Portanto, a afirmação da questão está correta porque destaca uma regra importante do mapeamento objeto-relacional feito pelo Hibernate: a necessidade de explicitar o nome da tabela quando este não coincide com o nome da classe.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Questão correta. Vale lembrar que no mapeamento da classe pode-se, ainda, informar na anotação @Table o esquema do banco de dados em que a tabela pertence, utilizando o atributo schema. Ex.: @Table(name="Nome_da_Tabela", schema="Nome_do_Esquema")

Só tomem cuidado:

Considerando que hibernate é uma implementação de JPA, a annotação @Entity(name="NomeTabela") também é válida, portanto a anotação @Table não é necessária

@Table vs @Entity

@Table is optional
@Entity is needed for annotating a POJO class as an entity, but the name attribute is not mandatory.

----------------------------------------------------------------------
If you have a class
@Entity
class MyEntity {}
A table with name "MyEntity" will be created and the Entity name will be MyEntity.

----------------------------------------------------------------------

@Entity(name="NewName")

class MyEntity {}

A table with name "NewName" will be created and the Entity name will be MyEntity.

if you have a class

----------------------------------------------------------------------

@Entity(name="MyEntityName")
@Table(name="MyEntityTableName")
class MyEntity {}

then a table with name MyEntityTableName is created and the entity name is MyEntityName.

http://stackoverflow.com/questions/7259273/whats-the-difference-between-the-name-argument-in-entity-and-table-when-using
https://www.quora.com/What-is-the-difference-between-Entity-name-Emp-and-Table-name-Emp-in-Hibernate

Clique para visualizar este comentário

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