Hibernate之集合映射

來源:互聯網
上載者:User

標籤:分享   ns2   png   list   conf   pac   全域配置   tor   pre   

一 List映射

如果持久化類中具有List對象,可以通過對應檔中的類<list>元素或註解來映射List.

例如,一個問題有多個答案:

 

1)建立持久化類

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

2)建立對應檔

<?xml version=‘1.0‘ encoding=‘UTF-8‘?>  <!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>

3)在全域設定檔中增加

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

4)測試

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

二 List一對多映射

一個問題有多個答案,每個答案有自己的資訊,需要使用一對多關聯來映射。

1)建立持久化類

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

2)設定檔

<?xml version=‘1.0‘ encoding=‘UTF-8‘?>  <!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>

3)在hibernate.cfg.xml中添加配置

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

4)測試

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

  

 

Hibernate之集合映射

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.