Hibernate 双向一对多表的关联
来源:互联网 发布:ipad应用网络连接失败 编辑:程序博客网 时间:2024/05/21 21:58
这里举的例子是班级-学生(1:N)的关系
1.首先班级学生实体类
班级
package enity;import java.util.HashSet;import java.util.Set;public class Grade implements java.io.Serializable {// Fieldsprivate Integer gid;private String gname;private String gdesc;private Set students = new HashSet(0);// Constructors/** default constructor */public Grade() {}/** minimal constructor */public Grade(String gname, String gdesc) {this.gname = gname;this.gdesc = gdesc;}/** full constructor */public Grade(String gname, String gdesc, Set students) {this.gname = gname;this.gdesc = gdesc;this.students = students;}// Property accessorspublic Integer getGid() {return this.gid;}public void setGid(Integer gid) {this.gid = gid;}public String getGname() {return this.gname;}public void setGname(String gname) {this.gname = gname;}public String getGdesc() {return this.gdesc;}public void setGdesc(String gdesc) {this.gdesc = gdesc;}public Set getStudents() {return this.students;}public void setStudents(Set students) {this.students = students;}}学生实体类
package enity;public class Student implements java.io.Serializable {// Fieldsprivate Integer sid;private Grade grade;private String sname;private String sex;// Constructors/** default constructor */public Student() {}/** full constructor */public Student(Grade grade, String sname, String sex) {this.grade = grade;this.sname = sname;this.sex = sex;}// Property accessorspublic Integer getSid() {return this.sid;}public void setSid(Integer sid) {this.sid = sid;}public Grade getGrade() {return this.grade;}public void setGrade(Grade grade) {this.grade = grade;}public String getSname() {return this.sname;}public void setSname(String sname) {this.sname = sname;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex = sex;}}
映射文件
Grade.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="enity.Grade" table="grade" catalog="testdatabase"> <id name="gid" type="java.lang.Integer"> <column name="gid" /> <generator class="increment" /> </id> <property name="gname" type="java.lang.String"> <column name="gname" not-null="true" /> </property> <property name="gdesc" type="java.lang.String"> <column name="gdesc" not-null="true" /> </property> <set name="students" inverse="true"> <key> <column name="gid" not-null="true" /> </key> <one-to-many class="enity.Student" /> </set> </class></hibernate-mapping>
student.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="enity.Student" table="student" catalog="testdatabase"> <id name="sid" type="java.lang.Integer"> <column name="sid" /> <generator class="increment" /> </id> <many-to-one name="grade" class="enity.Grade" fetch="select"> <column name="gid" not-null="true" /> </many-to-one> <property name="sname" type="java.lang.String"> <column name="sname" not-null="true" /> </property> <property name="sex" type="java.lang.String"> <column name="sex" not-null="true" /> </property> </class></hibernate-mapping>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="myeclipse.connection.profile">database</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.username">root</property><property name="connection.url">jdbc:mysql://localhost:3306/testdatabase</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="show_sql">true</property><property name="format_sql">true</property><property name="hbm2ddl.auto">create</property><mapping resource="enity/Student.hbm.xml" /><mapping resource="enity/Grade.hbm.xml" /></session-factory></hibernate-configuration>测试
package testHibernate;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import org.omg.CORBA.PUBLIC_MEMBER;import enity.Grade;import enity.Student;import util.HibernateSessionFactory;public class test {@Testpublic void test(){Session session = HibernateSessionFactory.getSession();Transaction transaction = session.beginTransaction();Grade grade = new Grade("Java","i like java");Student student = new Student(grade,"xiaoxin","man");Student student1 = new Student(grade,"xiaohong","femal");session.save(grade);session.save(student);session.save(student1);transaction.commit();}}
测试成功
控制台
数据库(grade表)
student表
0 0
- Hibernate 双向一对多表的关联
- Hibernate -- 一对多的双向关联关系
- Hibernate 一对多连接表双向关联
- Hibernate 一对多连接表双向关联
- Hibernate 一对多连接表双向关联
- hibernate基于连接表的一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- hibernate双向一对多关联
- Hibernate双向一对多关联
- Hibernate一对多双向关联
- Hibernate一对多双向关联
- Hibernate 一对多双向关联
- hibernate 一对多双向关联
- php curl后json_decode无法显示的问题
- JavaWeb—jsp页面中文乱码的几个问题
- 通配符与正则表达式
- Java实现选择排序
- python中os.system()的返回值
- Hibernate 双向一对多表的关联
- 人脸识别之人脸对齐(一)--定义及作用
- 关于ListView的getView方法被多次重复调用的问题
- c++ 与 Java 之 红黑树 哈希表 辨析
- 【Lua】四大循环语句&可变参数方法简例
- 使用伸展树(SplayTree)统计单词频率的Java实现
- 情感分析简要介绍
- javascript checkbox作为开关,控制全选和全不选的动态关联实现
- 【NOIP模拟】Math