Heim > Java > javaLernprogramm > Hauptteil

Ausführliche Erläuterung der Hibernate-Sammlungszuordnung

零下一度
Freigeben: 2017-06-27 10:18:19
Original
1293 Leute haben es durchsucht

Eine Listenzuordnung

Wenn es ein List-Objekt in der Persistenzklasse gibt, kann die Liste über das Klassenelement in der Zuordnungsdatei zugeordnet werden.

Für Beispiel: Eine Frage hat mehrere Antworten:

1) Erstellen Sie eine Persistenzklasse

package list;

import java.util.List;

public class Question {
	
	private int id;
	
	private String qname;
	
	private List<String> 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<String> getAnswers() {
		return answers;
	}

	public void setAnswers(List<String> answers) {
		this.answers = answers;
	}
	
	

}
Nach dem Login kopieren

2) Erstellen Sie eine Zuordnungsdatei

<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>  
<!DOCTYPE hibernate-mapping PUBLIC  
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

 <hibernate-mapping>  
  <class name="list.Question" table="quesion">  
  	 <cache usage="read-write"/>
    <id name="id">  
     <generator class="increment"></generator>  
    </id>  
    <property name="qname"></property> 
    <list name="answers" table="answers">
    	<key column="qid"></key>
    	<index column="type"></index>
    	<element column="answer" type="string"></element>
    </list>
     
  </class>  

 </hibernate-mapping>
Nach dem Login kopieren

3) Fügen Sie

 	<!-- List of XML mapping files -->
   		<mapping resource="list/Question.hbm.xml"/>
Nach dem Login kopieren

zur globalen Konfigurationsdatei hinzu 4) Testen Sie

package list;

import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {
	
	public static void main(String[] args) {
		
		Configuration cfg = new Configuration();
		cfg.configure("hibernate.cfg.xml");
		SessionFactory factory = cfg.buildSessionFactory();
		Session session = factory.openSession();
		session.beginTransaction();
		
		ArrayList<String> list1 = new ArrayList<String>();
		list1.add("answer1");
		list1.add("answer2");
		
		Question question1  = new Question();
		question1.setQname("question1");
		question1.setAnswers(list1);
		
		session.save(question1);
		
		session.getTransaction().commit();
		session.close();
		
		
		//factory.close();
		
		
	}

}
Nach dem Login kopieren

Eins-zu-viele-Zuordnung mit zwei Listen

Eine Frage hat mehrere Antworten, Jede Antwort hat ihre eigenen Informationen, die mithilfe einer Eins-zu-Viele-Zuordnung zugeordnet werden müssen.

1) Persistenzklasse erstellen

package list;

import java.util.List;

public class Question {
	
	private int id;
	
	private String qname;
	
	private List<Answer> 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<Answer> getAnswers() {
		return answers;
	}

	public void setAnswers(List<Answer> answers) {
		this.answers = answers;
	}


	
	

}
Nach dem Login kopieren
package list;

public class Answer {
	
	private int id;
	
	private String answername;
	
	private String postedBy;

	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;
	}
	
	

}
Nach dem Login kopieren

2) Konfigurationsdatei

<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>  
<!DOCTYPE hibernate-mapping PUBLIC  
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

 <hibernate-mapping>  
  <class name="list.Question" table="quesion">  
  	 <cache usage="read-write"/>
    <id name="id">  
     <generator class="increment"></generator>  
    </id>  
    <property name="qname"></property> 
    <list name="answers" cascade="all">
    	<key column="qid"></key>
    	<index column="type"></index>
    	<one-to-many class="list.Answer"/>
    </list>
   </class>
   
    <class name="list.Answer" table="answers">  
	  	 <cache usage="read-write"/>
	    <id name="id">  
	     <generator class="increment"></generator>  
	    </id>  
	    <property name="answername"></property> 
	    <property name="postedBy"></property>
    </class>  

 </hibernate-mapping>
Nach dem Login kopieren

3) Konfiguration in hibernate.cfg.xml hinzufügen

	 	<!-- List of XML mapping files -->
   		<mapping resource="list/Question.hbm.xml"/>
Nach dem Login kopieren

4) Test

package list;

import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {
	
	public static void main(String[] args) {
		
		Configuration cfg = new Configuration();
		cfg.configure("hibernate.cfg.xml");
		SessionFactory factory = cfg.buildSessionFactory();
		Session session = factory.openSession();
		session.beginTransaction();
		
		Answer ans1 = new Answer();
		ans1.setAnswername("ans1");
		ans1.setPostedBy("post1");
		
		Answer ans2 = new Answer();
		ans2.setAnswername("ans2");
		ans2.setPostedBy("post2");
		
		Answer ans3 = new Answer();
		ans3.setAnswername("ans3");
		ans3.setPostedBy("post3");
		ArrayList<Answer> list1 = new ArrayList<Answer>();
		list1.add(ans1);
		list1.add(ans2);
		list1.add(ans3);
		Question question1  = new Question();
		question1.setQname("question1");
		question1.setAnswers(list1);
		session.save(question1);
		session.getTransaction().commit();
		session.close();
		//factory.close();
			
	}
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Hibernate-Sammlungszuordnung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!