@EntitypublicclassCategory { @Id @GeneratedValueprivateLong id;privateString name;// 자기 자신을 매핑하는 것도 가능하다. @ManyToOne// 상위 카테고리가 연관 관계의 주인 @JoinColumn(name ="PARENT_ID")privateCategory parent;// 각각의 상위 카테고리에 매핑 된 하위 카테고리 @OneToMany(mappedBy ="parent")privateList<Category> child =newArrayList<>(); @ManyToMany// 중간 테이블을 만들어준다. @JoinTable(// 중간 테이블 이름 name ="CATEGORY_ITEM",// 한 쪽이 join 하는 것 joinColumns = @JoinColumn(name ="CATEGORY_ID"),// 반대쪽이 join 하는 것 inverseJoinColumns = @JoinColumn(name ="ITEM_ID") )privateList<Item> items =newArrayList<>();}