mappedByの意味

1202 ワード

いつもmappedByが何の役に立つのかよく分からないので、今日本を読んで、やっと答えを見つけて、記録します.
public class TrainingProgram{
   ......
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "trainingProgram")
    private Set<Course> courses = new HashSet<Course>();
   ......
}

The @OneToMany annotation tells JPA that a relationship is established between Course and TrainingProgram, so that when queries are issued, JPA can write the proper SQL statements. You’ve used the mappedBy attribute, which describes the name of the attribute in the Course object that represents the related TrainingProgram.
 
public class Course{
    ......
    @ManyToMany(cascade = CascadeType.ALL, mappedBy = "courses")
    private Set<Tag> tags = new HashSet<Tag>();
    ......
}

As you can see, the mappedBy attribute defines the name of the set within the Tag entity and establishes that Course is not in charge of persisting the Tags. In a bidirectional many-to-many relationship, one side must be the primary, and the other side must be the inverse side. The inverse side is indicated here as Course, because it defines the mappedBy attribute.