这个 "Hibernate" class 映射究竟代表什么?
What exactly represent this "Hibernate" class mapping?
我正在开发一个 Java 我认为使用 Hibernate 的 Web 应用程序,但我不太喜欢 Hibernate,所以我有以下疑问:
我有一个名为 ReaDichiarazioneIntento 的模型 class,它映射一个名为 REA_DICHIARAZIONE_INTENTO 的数据库 table ],像这样:
@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
...................................................................
...................................................................
...................................................................
}
好吧,我对此有一些疑问class。我的疑问是:
1) 是否使用 Hibernate 将 class 映射到数据库 table?或者是什么?我知道要将数据库 table 映射到 class 我必须做类似的事情:
@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) 最后一个疑问与数据库中class 字段到table 列之间的映射有关。为什么只在getter方法上做,而不是直接在字段名上做?
Tnx
这是使用JPA,貌似不是hibernate。 Here is the difference according to SO and here is another link
- 它使用的是JPA注解,而Hibernate是一个JPA实现。 JPA 本身只是一组 interfaces/annotations,而 JPA 实现(如 Hibernate)围绕这些 interfaces/annotations 提供 meat。除了指定的架构外,这两个注释之间没有区别。 Hibernate 也有自己的
@Table
annotation but it is used for additional information supplied by JPA'a @Table
注解
@IdClass
表示该实体使用复杂主键
Specifies a composite primary key class that is mapped to multiple fields or properties of the entity.
- 您可以注释字段或属性(getter),由您决定。但是,
@Id
映射决定了什么是有效的,这意味着如果您将 @Id
放在字段上,那么您必须将所有其他映射也放在字段上,反之亦然。
我正在开发一个 Java 我认为使用 Hibernate 的 Web 应用程序,但我不太喜欢 Hibernate,所以我有以下疑问:
我有一个名为 ReaDichiarazioneIntento 的模型 class,它映射一个名为 REA_DICHIARAZIONE_INTENTO 的数据库 table ],像这样:
@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
...................................................................
...................................................................
...................................................................
}
好吧,我对此有一些疑问class。我的疑问是:
1) 是否使用 Hibernate 将 class 映射到数据库 table?或者是什么?我知道要将数据库 table 映射到 class 我必须做类似的事情:
@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) 最后一个疑问与数据库中class 字段到table 列之间的映射有关。为什么只在getter方法上做,而不是直接在字段名上做?
Tnx
这是使用JPA,貌似不是hibernate。 Here is the difference according to SO and here is another link
- 它使用的是JPA注解,而Hibernate是一个JPA实现。 JPA 本身只是一组 interfaces/annotations,而 JPA 实现(如 Hibernate)围绕这些 interfaces/annotations 提供 meat。除了指定的架构外,这两个注释之间没有区别。 Hibernate 也有自己的
@Table
annotation but it is used for additional information supplied by JPA'a@Table
注解 @IdClass
表示该实体使用复杂主键
Specifies a composite primary key class that is mapped to multiple fields or properties of the entity.
- 您可以注释字段或属性(getter),由您决定。但是,
@Id
映射决定了什么是有效的,这意味着如果您将@Id
放在字段上,那么您必须将所有其他映射也放在字段上,反之亦然。