hibernate一對多,細節講解
阿新 • • 發佈:2020-11-30
1.一對多
1).首先建立兩個實體類studeninfo.java跟studentxxb.java
1)studentinfo.java表如圖:
package model; import java.util.Date; import java.util.HashSet; import java.util.Set; public class studentinfo { private Integer id; private String name; private String aihao; private Date sjina; private Set<studentxxb> studentxxbs=new HashSet<>(); public studentinfo() { super(); } public studentinfo(Integer id, String name, String aihao, Date sjina, Set<studentxxb> studentxxbs) { super(); this.id = id; this.name = name; this.aihao = aihao; this.sjina = sjina; this.studentxxbs = studentxxbs; } @Override public String toString() { return "studentinfo [id=" + id + ", name=" + name + ", aihao=" + aihao + ", sjina=" + sjina + ", studentxxbs=" + studentxxbs + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAihao() { return aihao; } public void setAihao(String aihao) { this.aihao = aihao; } public Date getSjina() { return sjina; } public void setSjina(Date sjina) { this.sjina = sjina; } public Set<studentxxb> getStudentxxbs() { return studentxxbs; } public void setStudentxxbs(Set<studentxxb> studentxxbs) { this.studentxxbs = studentxxbs; } }
2)stdentxxb.java如下圖:
package model; import java.util.Date; public class studentxxb { private Integer id; private String dhua; private String diz; private studentinfo studentinfos; public studentxxb() { super(); } public studentxxb(Integer id, String dhua, String diz, studentinfo studentinfos) { super(); this.id = id; this.dhua = dhua; this.diz = diz; this.studentinfos = studentinfos; } @Override public String toString() { return "studentxxb [id=" + id + ", dhua=" + dhua + ", diz=" + diz + ", studentinfos=" + studentinfos + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDhua() { return dhua; } public void setDhua(String dhua) { this.dhua = dhua; } public String getDiz() { return diz; } public void setDiz(String diz) { this.diz = diz; } public studentinfo getStudentinfos() { return studentinfos; } public void setStudentinfos(studentinfo studentinfos) { this.studentinfos = studentinfos; } }
2).兩個實體類建立好了,接下來配置兩個實體類的hbm.xml檔案
1).實體類studentinfo.java的配置(studentinfp-mapping.hbm.xml)如圖:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="model.studentinfo" table="studentinfo"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"></property> <property name="aihao" column="aihao"></property> <property name="sjina" column="sjina"></property> <set name="studentxxbs"> <key> <column name="student_xxbs"></column> </key> <one-to-many class="model.studentxxb"/> </set> </class> </hibernate-mapping>
2). 實體類studentxxb.java的配置(studentxxb-mapping.hbm.xml)如圖:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="model.studentxxb" table="studentxxb"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="dhua" column="dhua"></property> <property name="diz" column="diz"></property>
<many-to-one name="studentinfos" class="model.studentinfo" column="student_infos"></many-to-one> </class> </hibernate-mapping>
3)接下來配置cfg.xml檔案這裡命名為(hibernate.cfg.xml):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="model.studentinfo" table="studentinfo"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"></property> <property name="aihao" column="aihao"></property> <property name="sjina" column="sjina"></property> <set name="studentxxbs"> <key> <column name="student_xxbs"></column> </key> <one-to-many class="model.studentxxb"/> </set> </class> </hibernate-mapping>
4)測試類 Testmain.java:
package test; import java.util.Date; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import model.studentinfo; import model.studentxxb; public class Testmain1 { public static void main(String[] args) { Session session=new Configuration().configure().buildSessionFactory().openSession(); Transaction tt=session.beginTransaction(); studentinfo studentinfo=new studentinfo(); studentinfo.setName("王胖子"); studentinfo.setAihao("爬山"); studentinfo.setSjina(new Date()); studentxxb xxb=new studentxxb(); xxb.setDiz("是是是"); xxb.setDhua("1111111"); studentinfo.getStudentxxbs().add(xxb); xxb.setStudentinfos(studentinfo); session.save(xxb); session.save(studentinfo); tt.commit(); session.close(); } }
5)控制檯執行結果:
6)資料庫執行結果:
*先導包