您的位置:首页 > 其它

hibernate之配置文件

2016-06-13 15:07 309 查看

双向多对多非注解方式

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

具体实现

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="s
4000
ex"
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&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) {

         
ea25
  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>
      <!—set的name属性是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&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();

       }

                  

         }

        

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: