1.对象属性是复合数据类型(composite user type):(这其实是OO中的aggregation 和 composition)
Embeddable + Embedded
<span style="font-size:14px;">package com.oreilly.hh.data;
import java.io.Serializable;
import javax.persistence.Embeddable;
/**
* A simple structure encapsulating a stereo volume level.
*/
@Embeddable
public class StereoVolume implements Serializable {
...
}</span>
<span style="font-size:14px;">@Entity
public class Track{
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "left", column = @Column(name = "VOL_LEFT")),
@AttributeOverride(name = "right", column = @Column(name = "VOL_RIGHT"))
})
StereoVolume volume;
}</span>
2.对象属性是由简单原生对象组合成的集合对象
CollectionOfElements
<span style="font-size:14px;">@CollectionOfElements
@JoinTable(name="TRACK_COMMENTS",
joinColumns = @JoinColumn(name="TRACK_ID"))
@Column(name="COMMENT")
private Set<String> comments;</span>
3. object inheritance
4.object identity
5.object association
5.1) ManyToMany
The join table is specified on the owning side. If the association is bidirectional, either side may be designated as the owning side. If the relationship is bidirectional, the non-owning side must use themappedBy
element of the ManyToMany
annotation to specify the relationship field or property of the owning side.