gpt4 book ai didi

java - "Hibernate"类映射到底代表什么?

转载 作者:行者123 更新时间:2023-12-01 22:16:00 24 4
gpt4 key购买 nike

我正在开发一个 Java Web 应用程序,我认为该应用程序使用 Hibernate,但我不太喜欢 Hibernate,所以我有以下疑问:

我有一个名为 ReaDichiarazioneIntento 的模型类,它映射名为 REA_DICHIARAZIONE_INTENTO 的数据库表,如下所示:

@javax.persistence.IdClass(it.enel.wearea.entity.ReaDichiarazioneIntentoPK.class)
@javax.persistence.Table(name = "REA_DICHIARAZIONE_INTENTO", schema = "EDIWEA")
@Entity
public class ReaDichiarazioneIntento implements Cloneable {

private Integer idDichiarazione;

@javax.persistence.Column(name = "ID_DICHIARAZIONE")
@Id
public Integer getIdDichiarazione() {
return idDichiarazione;
}

public void setIdDichiarazione(Integer idDichiarazione) {
this.idDichiarazione = idDichiarazione;
}

private Integer idCliente;

@javax.persistence.Column(name = "ID_CLIENTE")
@Basic
public Integer getIdCliente() {
return idCliente;
}

public void setIdCliente(Integer idCliente) {
this.idCliente = idCliente;
}

...................................................................
...................................................................
...................................................................
SOME OTHER FIELDS AND RELATED GETTER AND SETTER METHODS
...................................................................
...................................................................
...................................................................

}

好吧,我对这门课有一些疑问。我的疑问是:

1)是否使用Hibernate将类映射到数据库表?或者是什么?我知道要将数据库表映射到类,我必须执行以下操作:

@Entity
@Table(name = "REA_DICHIARAZIONE_INTENTO")

为什么在这个项目中这样做:

@javax.persistence.IdClass(it.enel.wearea.entity.ReaDichiarazioneIntentoPK.class)
@javax.persistence.Table(name = "REA_DICHIARAZIONE_INTENTO", schema = "EDIWEA")
@Entity

@Table(name = "REA_DICHIARAZIONE_INTENTO") 注释和 @javax.persistence.Table(name = "REA_DICHIARAZIONE_INTENTO", schema = "EDIWEA") 有什么区别 注释(在我的项目中使用)?

2)第二个疑点与此注释有关:

@javax.persistence.IdClass(it.enel.wearea.entity.ReaDichiarazioneIntentoPK.class)

具体是什么意思?

3) 最后一个疑问与类字段到数据库表列之间的映射有关。为什么只在getter方法上完成而不是直接在字段名上完成?

Tnx

最佳答案

  1. 它使用JPA注释,而Hibernate是JPA实现。 JPA 本身只是一组接口(interface)/注释,而 JPA 实现(如 Hibernate)提供了围绕这些接口(interface)/注释的内容。除了指定的模式之外,两个注释之间没有任何区别。 Hibernate也有自己的@Table注释,但它用于 JPA'a @Table 提供的附加信息注释
  2. @IdClass表示该实体使用复杂主键

Specifies a composite primary key class that is mapped to multiple fields or properties of the entity.

  • 您可以注释字段或属性(getter),这取决于您。但是,@Id 映射决定了什么是有效的,这意味着如果您将 @Id 放在字段上,那么您也必须将所有其他映射放在字段上,反之亦然。
  • 关于java - "Hibernate"类映射到底代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31029637/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com