Hibernate 单向一对多配置以及增删改查

来源:互联网 发布:网络劫持原理 编辑:程序博客网 时间:2024/04/28 14:57

Hibernate 单向一对多配置以及增删改查

先定义一个班级类:

public class Grade {private int gid;private String gname;private String gdesc;private Set<Students> set = new HashSet<Students>();public Grade() {}public Grade(int gid, String gname, String gdesc) {super();this.gid = gid;this.gname = gname;this.gdesc = gdesc;}public Grade(String gname, String gdesc) {super();this.gname = gname;this.gdesc = gdesc;}public int getGid() {return gid;}public void setGid(int gid) {this.gid = gid;}public String getGname() {return gname;}public void setGname(String gname) {this.gname = gname;}public String getGdesc() {return gdesc;}public void setGdesc(String gdesc) {this.gdesc = gdesc;}@Overridepublic String toString() {return "Grade [gid=" + gid + ", gname=" + gname + ", gdesc=" + gdesc+ "]";}public Set<Students> getSet() {return set;}public void setSet(Set<Students> set) {this.set = set;}}

定义Grade.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated May 24, 2016 4:29:13 PM by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping>    <class name="Grade" table="GRADE">        <id name="gid" type="int">            <column name="GID" />            <generator class="increment" />        </id>        <property name="gname" type="java.lang.String">            <column name="GNAME" />        </property>        <property name="gdesc" type="java.lang.String">            <column name="GDESC" />        </property>        <set name="set" table="STUDENTS" inverse="false" lazy="true">            <key>                <column name="GID" />            </key>            <one-to-many class="Students" />        </set>    </class></hibernate-mapping>

定义学生类:
public class Students {private int sid;private String Sname;private String gender;public Students() {}public Students(int sid, String sname, String gender) {super();this.sid = sid;Sname = sname;this.gender = gender;}public Students(String sname, String gender) {super();Sname = sname;this.gender = gender;}public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public String getSname() {return Sname;}public void setSname(String sname) {Sname = sname;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Students [sid=" + sid + ", Sname=" + Sname + ", gender="+ gender + "]";}}
定义:Students.hbm.xml

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated May 24, 2016 4:29:13 PM by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping>    <class name="Students" table="STUDENTS">        <id name="sid" type="int">            <column name="SID" />            <generator class="increment" />        </id>        <property name="Sname" type="java.lang.String">            <column name="SNAME" />        </property>        <property name="gender" type="java.lang.String">            <column name="GENDER" />        </property>    </class></hibernate-mapping>



测试类:

import static org.junit.Assert.*;import java.sql.Connection;import java.sql.SQLException;import java.util.Date;import java.util.Iterator;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.jdbc.Work;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.yonyou.hibernateentity.Grade;import com.yonyou.hibernateentity.Students;import com.yonyou.hibernateutil.HibernateUtil;public class TestStudents {@Testpublic void testAdd() {Grade grade = new Grade("java一班", "java软件一班");Students stu = new Students("张三", "男");Students stu2 = new Students("李四", "女");grade.getSet().add(stu);grade.getSet().add(stu2);Session session = HibernateUtil.getSession();Transaction transaction = session.beginTransaction();session.save(grade);session.save(stu);session.save(stu2);transaction.commit();HibernateUtil.closeSession(session);}/** * 获取gid=1的班级和班级所有学生。 */@Testpublic void testget() {Session session = HibernateUtil.getSession();Grade grade = (Grade) session.get(Grade.class, 1);System.out.println(grade);Set<Students> set = grade.getSet();for (Iterator iterator = set.iterator(); iterator.hasNext();) {Students students = (Students) iterator.next();System.out.println(students);}}/** * 添加一个软件二班,更新sid=1的学生到软件二班 */@Testpublic void testupdate() {Session session = HibernateUtil.getSession();Transaction tr = session.beginTransaction();Students stu = (Students) session.get(Students.class, 1);Grade grade = new Grade("java二班", "java软件二班");grade.getSet().add(stu);session.save(grade);tr.commit();HibernateUtil.closeSession(session);}/** * 添加一个软件二班,更新sid=1的学生到软件二班 */@Testpublic void testdelete() {Session session = HibernateUtil.getSession();Transaction tr = session.beginTransaction();//Students stu = (Students) session.get(Students.class, 2);//session.delete(stu);Grade stu = (Grade) session.get(Grade.class, 2);session.delete(stu);tr.commit();HibernateUtil.closeSession(session);}}
hibernateUtil:

import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateUtil {    private static SessionFactory sessionFactory;    private static Session session;    static {        // 创建配置对象        Configuration config = new Configuration().configure();        // 创建服务注册对象        ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(                config.getProperties()).buildServiceRegistry();        // 创建会话工厂对象        sessionFactory = config.buildSessionFactory(registry);        // 创建会话对象        session = sessionFactory.openSession();    }    public static SessionFactory getSessionFactory() {        return sessionFactory;    }    public static Session getSession() {        session = sessionFactory.openSession();        return session;    }    public static void closeSession(Session session) {        if (session != null) {            session.close();        }    }}

主配置文件hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="connection.username">root</property><property name="connection.password">123456</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://10.115.0.223:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><property name="format_sql">false</property><property name="hbm2ddl.auto">update</property><!-- <property name="default_schema">hibernate</property> --><mapping resource="Students.hbm.xml" /><mapping resource="Grade.hbm.xml" /></session-factory></hibernate-configuration>



以上配置,是由一端控制多端的增加,更改,删除的。


0 0