hibernate之配置文件

双向多对多非注解方式

需求: 一个学生可以对应多个老师,一个老师可以对应多个学生

具体实现

1.   建模

Teacher类

package com.model;

import java.io.Serializable;

import java.util.HashSet;

import java.util.Set;

public class Teacher implements Serializable{

        

         privateint tid;

         privateString tname;

         private Set<Stud> st=new HashSet<Stud>();

         publicint getTid() {

                   returntid;

         }

         publicvoid setTid(int tid) {

                   this.tid= tid;

         }

         publicString getTname() {

                   returntname;

         }

         publicvoid setTname(String tname) {

                   this.tname= tname;

         }

         publicSet<Stud> getSt() {

                   returnst;

         }

         publicvoid setSt(Set<Stud> st) {

                   this.st= st;

         }

}

Stud类

package com.model;

import java.io.Serializable;

import java.util.HashSet;

import java.util.Set;

public class Stud implements Serializable {

         privateint id;

         privateString sname;

        

         privateint age;

         privateString sex;

         privateString address;

   private Groupp group;

    private Set<Teacher> teacher=new HashSet<Teacher>();

   

         publicGroupp getGroup() {

                   returngroup;

         }

         publicvoid setGroup(Groupp group) {

                   this.group= group;

         }

         publicint getAge() {

                   returnage;

         }

         publicvoid setAge(int age) {

                   this.age= age;

         }

         publicString getSex() {

                   returnsex;

         }

         publicvoid setSex(String sex) {

                   this.sex= sex;

         }

         publicString getAddress() {

                   returnaddress;

         }

         publicvoid setAddress(String address) {

                   this.address= address;

         }

        

         publicint getId() {

                   returnid;

         }

         publicvoid setId(int id) {

                   this.id= id;

         }

         publicString getSname() {

                   returnsname;

         }

         publicvoid setSname(String sname) {

                   this.sname= sname;

         }

         publicSet<Teacher> getTeacher() {

                   returnteacher;

         }

         publicvoid setTeacher(Set<Teacher> teacher) {

                   this.teacher= teacher;

         }

}

2.实体映射关系

Stud.hbm.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

   <class name="com.model.Stud"table="stud">

       <id name="id" type="java.lang.Integer">

           <column name="id" precision="22"scale="0" />

            <generator class="native"></generator>

      </id>

    

      <property name="sname"column="sname" type="java.lang.String"></property>

      <property name="age"column="age" type="java.lang.Integer"></property>

      <property name="address"column="address" type="java.lang.String"></property>

      <property name="sex"column="sex" type="java.lang.String"></property>

      <!-- 表之间关系映射 -->

     <!--  <many-to-one name="group"column="groupId"></many-to-one> -->

      <!—set的属性是stud类中teacher类的属性,key是stud类中的主键列名-->

      <set name="teacher" cascade="save-update,delete">

            <key column="id"></key>

            <many-to-many class="com.model.Teacher"/>

        </set>

    </class>

</hibernate-mapping>

 

 

teacher.hbm.xml文件

 

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

   <class name="com.model.Teacher"table="teacher">

     <id name="tid"column="tid"type="java.lang.Integer">

            <generator class="native"></generator>

        </id>

      <property name="tname"column="tname" type="java.lang.String"></property>

          <!-- set的属性是teacher类中stud类的属性,key是teacher类中的主键列名-->

      <set name="st" cascade="save-update,delete">

            <key column="tid"></key>

            <many-to-many class="com.model.Stud"/>

        </set>

    </class>

</hibernate-mapping>

 

3.配置hibernate的配置文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/HibernateConfiguration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

  <session-factory>

      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.password">123456</property>

        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hiber?useUnicode=true&amp;characterEncoding=UTF-8</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="hbm2ddl.auto">update</property>

      

         

         <mapping resource="com/cfg/tbl/stud.hbm.xml"/>

         <mapping resource="com/cfg/tbl/teacher.hbm.xml"/>

       

   </session-factory>

 

</hibernate-configuration>

 

4.测试类

package com.Test;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.db.util.HiberDBUtil;

import com.model.Groupp;

import com.model.Stud;

import com.model.Teacher;

public class TestSive {

         publicstatic void main(String[] args) {

                  

      Session session=HiberDBUtil.getSession();

                  

                   Teachertea1=new Teacher();

                   tea1.setTname("TA");

                  

                   Teachertea2=new Teacher();

                   tea2.setTname("wo");

                  

                  

                   Studstud1=new Stud();

                   stud1.setAge(21);

                   stud1.setAddress("guangzhou");

                   stud1.setSex("女");

                   stud1.setSname("student1");

                  

                  

                   Studstud2=new Stud();

                   stud2.setAge(20);

                   stud2.setAddress("guangzhou");

                   stud2.setSex("男");

                   stud2.setSname("student2");

                  

                  

                   //建立关系

                   tea1.getSt().add(stud1);

                   tea1.getSt().add(stud2);

                   tea2.getSt().add(stud2);

                  

                   stud1.getTeacher().add(tea1);

                   stud1.getTeacher().add(tea2);

                   stud2.getTeacher().add(tea2);

                  

                  

                   Transactiontr = session.beginTransaction();

       try {

           session.save(tea1);

           session.save(tea2);

           session.save(stud1);

           session.save(stud2);

           tr.commit();

       } catch (Exception e) {

           tr.rollback();

       }finally{

           HiberDBUtil.closeSession();

       }

                  

         }

                  

                  

                  

         }

        

        

双向一对多非注解方式

需求:一个学生对应一个组,一个组对应多个学生

具体实现

1.   建模model

Stud类

packagecom.model;

importjava.io.Serializable;

importjava.util.HashSet;

importjava.util.Set;

publicclass Stud implements Serializable {

private int id;

private String sname;

private int age;

private String sex;

private String address;

private Groupp group;

 

   

public Groupp getGroup() {

           return group;

}

public void setGroup(Groupp group) {

           this.group = group;

}

public int getAge() {

           return age;

}

public void setAge(int age) {

           this.age = age;

}

public String getSex() {

           return sex;

}

public void setSex(String sex) {

           this.sex = sex;

}

public String getAddress() {

           return address;

}

public void setAddress(String address) {

           this.address = address;

}

public int getId() {

           return id;

}

public void setId(int id) {

           this.id = id;

}

public String getSname() {

           return sname;

}

public void setSname(String sname) {

           this.sname = sname;

}

}

Group类

package com.model;

import java.io.Serializable;

import java.util.HashSet;

import java.util.Set;

public class Groupp implements Serializable {

privateint groupId;

privateString groupName;

private Set<Stud>students=new HashSet<Stud>();

publicint getGroupId() {

           returngroupId;

}

publicvoid setGroupId(int groupId) {

           this.groupId= groupId;

}

publicString getGroupName() {

           returngroupName;

}

publicvoid setGroupName(String groupName) {

           this.groupName= groupName;

}

publicSet<Stud> getStudents() {

           returnstudents;

}

publicvoid setStudents(Set<Stud> students) {

           this.students= students;

}

}

配置实体映射关系

Stud.hbm.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

   <class name="com.model.Stud"table="stud">

       <id name="id" type="java.lang.Integer">

           <column name="id" precision="22"scale="0" />

            <generator class="native"></generator>

      </id>

    

      <property name="sname"column="sname" type="java.lang.String"></property>

      <property name="age"column="age" type="java.lang.Integer"></property>

      <property name="address"column="address" type="java.lang.String"></property>

      <property name="sex" column="sex"type="java.lang.String"></property>

      <!-- 表之间关系映射 -->

    <!—many-to-one name属性是Stud类中的Group的属性,列值是Group类中的主键列名-->

    <many-to-one name="group"column="groupId"></many-to-one>       

     

    </class>

</hibernate-mapping>

Group.hbm.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

   <class name="com.model.Groupp"table="Groupp">

     <id name="groupId"column="groupId" type="java.lang.Integer">

            <generator class="native"></generator>

        </id>

      <property name="groupName"column="groupName" type="java.lang.String"></property>

      <!—setname属性是Group类中Student类的属性,key值是Group的主键的列名-->

      <set name="students"cascade="save-update,delete">

            <key column="groupId"></key>

            <one-to-many class="com.model.Stud"/>

        </set>

    </class>

</hibernate-mapping>

2.   配置hibernate的文件

 <?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configurationPUBLIC

"-//Hibernate/HibernateConfiguration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

   <session-factory>

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.password">123456</property>

        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hiber?useUnicode=true&amp;characterEncoding=UTF-8</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="hbm2ddl.auto">update</property>

      

        <mapping resource="com/cfg/tbl/group.hbm.xml"/>        

<mapping resource="com/cfg/tbl/stud.hbm.xml"/>

                

    </session-factory>

 

</hibernate-configuration>

测试类

package com.Test;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.db.util.HiberDBUtil;

import com.model.Groupp;

import com.model.Stud;

public class TestFive {

         publicstatic void main(String[] args) {

                  

                   Sessionsession=HiberDBUtil.getSession();

                  

                   Grouppgroup=new Groupp();

                   group.setGroupName("mm");

                  

                  

                   Studstud1=new Stud();

                   stud1.setAge(21);

                   stud1.setAddress("guangzhou");

                   stud1.setSex("女");

                   stud1.setSname("haha");

                  

                  

                   Studstud2=new Stud();

                   stud2.setAge(20);

                   stud2.setAddress("guangzhou");

                   stud2.setSex("男");

                   stud2.setSname("kaka");

                  

                  

                   group.getStudents().add(stud1);

                   group.getStudents().add(stud2);

                  

                   Transactiontr = session.beginTransaction();

       try {

           session.save(group);

           tr.commit();

       } catch (Exception e) {

           tr.rollback();

       }finally{

           HiberDBUtil.closeSession();

       }

                  

         }

        

}

猜你喜欢

转载自blog.csdn.net/hzs33/article/details/51657870