📜  Hibernate集合映射教程

📅  最后修改于: 2021-01-02 15:34:00             🧑  作者: Mango

Hibernate中的集合映射

我们可以在Hibernate中映射Persistent类的集合元素。您需要从以下类型之一声明Persistent类中的集合类型:

  • java.util.List
  • java.util.Set
  • java.util.SortedSet
  • java.util.Map
  • java.util.SortedMap
  • java.util.Collection
  • 或编写org.hibernate.usertype.UserCollectionType的实现

持久性类应该像这样为collection元素定义。


package com.javatpoint;

import java.util.List;

public class Question {
private int id;
private String qname;
private List answers;//List can be of any type

//getters and setters

}


映射文件中的映射集合

元素有许多子元素可以映射集合。它们是 。让我们看看如何实现上述类的列表:


          
          
          
          
          
          
          
          
          
          
          
          

列表中使用了三个子元素:

  • 元素用于根据Question类标识符在此表中定义外键。
  • 元素用于标识类型。 List和Map是索引集合。
  • 用于定义集合的元素。

如果collection存储字符串对象,则这是collection的映射。但是,如果集合存储实体引用(另一个类对象),则需要定义元素。现在,Persistent类将如下所示:

package com.javatpoint;

import java.util.List;

public class Question {
private int id;
private String qname;
private List answers;//Here, List stores the objects of Answer class

//getters and setters

}
package com.javatpoint;
import java.util.List;
public class Answer {
private int id;
private String answer;
private String posterName;
//getters and setters
}

现在,映射文件将是:



          
          
          
          
          
          
          
          
          
          
          
          

在此,列表是通过一对多关系映射的。在这种情况下,一个问题可能有很多答案。

了解关键要素

key元素用于根据原始身份在联接表中定义外键。默认情况下,外键元素可以为空。因此,对于不可为空的外键,我们需要指定不可为空的属性,例如:




键元素的属性为列,删除,属性引用,非空,更新和唯一。




索引集合

收集元素可以分为两种形式:

  • 索引
  • 非索引

List和Map集合已建立索引,而set和bag集合未建立索引。在这里,索引集合意味着List和Map需要一个附加元素

集合元素

集合元素可以具有值或实体引用(另一个类对象)。我们可以使用4个元素之一

  • 元件
  • 组成元素
  • 一对多
  • 多对多

element和component-element用于正常值,例如字符串,int等,而一对多和多对多用于映射实体引用。