📜  使用XML休眠多对多示例

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

使用XML休眠多对多示例

我们可以使用列表,集合,包,地图等来映射多对多关系。在这里,我们将使用列表进行多对多映射。在这种情况下,将创建三个表。

多对多映射示例

在此示例中,我们将使用列表生成问题和答案之间的多对多关系。

1)创建持久性类

有两个持久性类Question.java和Answer.java。问题类包含答案类参考,反之亦然。

Question.java

package com.javatpoint;  
  
import java.util.List;  
  
public class Question {  
private int id;  
private String qname;  
private List answers;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getQname() {
    return qname;
}
public void setQname(String qname) {
    this.qname = qname;
}
public List getAnswers() {
    return answers;
}
public void setAnswers(List answers) {
    this.answers = answers;
}    
}

Answer.java

package com.javatpoint;

import java.util.*;

public class Answer {  
private int id;  
private String answername;  
private String postedBy;  
private List questions;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getAnswername() {
    return answername;
}
public void setAnswername(String answername) {
    this.answername = answername;
}
public String getPostedBy() {
    return postedBy;
}
public void setPostedBy(String postedBy) {
    this.postedBy = postedBy;
}
public List getQuestions() {
    return questions;
}
public void setQuestions(List questions) {
    this.questions = questions;
}  
}

2)为持久化类创建Mapping文件

在这里,我们创建了用来定义列表的question.hbm.xml和answer.hbm.xml文件。

question.hbm.xml

  
  
            
  

  
        
            
            
        
        

        
            
                
            
        
     
       

answer.hbm.xml

  
  
            
  

        
            
            
        
        
        
    

3)创建配置文件

该文件包含有关数据库和映射文件的信息。

hibernate.cfg.xml

  
  
  
  
  
      
        create  
        org.hibernate.dialect.Oracle9Dialect  
        jdbc:oracle:thin:@localhost:1521:xe  
        system  
        jtp  
        oracle.jdbc.driver.OracleDriver  
      
    
      
  
  

4)创建存储数据的类

StoreData.java

package com.javatpoint;  
import java.util.ArrayList;  
import org.hibernate.*;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
   
public class StoreData {  
public static void main(String[] args) {  
   
    StandardServiceRegistry ssr=new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();  
    Metadata meta=new MetadataSources(ssr).getMetadataBuilder().build();  
    SessionFactory factory=meta.getSessionFactoryBuilder().build();  
    Session session=factory.openSession();  
    Transaction t=session.beginTransaction();    
        
    Answer ans1=new Answer();
    ans1.setAnswername("Java is a programming language");
    ans1.setPostedBy("Ravi Malik");
    
    Answer ans2=new Answer();
    ans2.setAnswername("Java is a platform");
    ans2.setPostedBy("Sudhir Kumar");
   
    Question q1=new Question();
    q1.setQname("What is Java?");
    ArrayList l1=new ArrayList();
    l1.add(ans1);
    l1.add(ans2);
    q1.setAnswers(l1);
    
    Answer ans3=new Answer();  
    ans3.setAnswername("Servlet is an Interface");  
    ans3.setPostedBy("Jai Kumar");  
          
    Answer ans4=new Answer();  
    ans4.setAnswername("Servlet is an API");  
    ans4.setPostedBy("Arun");  
    
    Question q2=new Question();
    q2.setQname("What is Servlet?");
    ArrayList l2=new ArrayList();
    l2.add(ans3);
    l2.add(ans4);
    q2.setAnswers(l2);
    session.persist(q1);  
    session.persist(q2);  
      
    t.commit();  
    session.close();  
    System.out.println("success");      
}  
}  

输出量


下载