`

hibernate实体N对N映射实例(1)

阅读更多
转载:http://hi.baidu.com/yuanquanfeng
hibernate配置文件

<?xml version="1.0"?>
<!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="show_sql">true</property>
<property name="connection.isolation">2</property>
<property name="myeclipse.connection.profile">mysqlyuan</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<property name="hbm2ddl.auto">create</property>
<property name="connection.driver_class">
   com.mysql.jdbc.Driver
</property>
<property name="dialect">
   org.hibernate.dialect.MySQLDialect
</property>
<mapping resource="com/tarena/enrollment/biz/entity/Student.hbm.xml" />
<mapping resource="com/tarena/enrollment/biz/entity/Course.hbm.xml" />
</session-factory>
</hibernate-configuration>

Course.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">
<hibernate-mapping package="com.tarena.enrollment.biz.entity">
<class name="Course" table="t_course_many2many" >
<id name="oid"
     column="OID">
   <generator class="native"/>
</id>

<property name="cid"
         column="CID"
         unique="true"
         not-null="true"/>
<property name="name"
         column="NAME"
         not-null="true" />
   <set name="stus" table="t_enrollment"
          cascade="save-update">
    <key column="CFID"/>
    <many-to-many class="Student"
              column="SFID"/>
   </set>
</class>
</hibernate-mapping>


Student.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">
<hibernate-mapping package="com.tarena.enrollment.biz.entity">
<class name="Student" table="s_student_man2many">
   <id name="oid" column="OID">
     <generator class="native"/>
   </id>
   <property name="sid"
          column="STUDENTID"
          unique="true"
          not-null="true"/>
   <property name="name"
          column="STUDENTNAME"
          not-null="true"/>
   <set name="cours" table="t_enrollment"
              cascade="save-update"
              inverse="true">
     <key column="SFID"/>
     <many-to-many class="Course"
               column="CFID"/>
   </set> 
  
</class>
</hibernate-mapping>

实体类Course.java

package com.tarena.enrollment.biz.entity;

import java.util.HashSet;
import java.util.Set;

public class Course {
private Long oid;
private String cid;
private String name;

private Set stus=new HashSet();

public Course(){}

public Course(String cid, String name) {
   super();
   this.cid = cid;
   this.name = name;

}

public Course(String cid, String name, Set stus) {
   super();
   this.cid = cid;
   this.name = name;
   this.stus = stus;
}

public Long getOid() {
   return oid;
}

public void setOid(Long oid) {
   this.oid = oid;
}

public String getCid() {
   return cid;
}

public void setCid(String cid) {
   this.cid = cid;
}

public String getName() {
   return name;
}

public void setName(String name) {
   this.name = name;
}

public Set getStus() {
   return stus;
}

public void setStus(Set stus) {
   this.stus = stus;
}
@Override
public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((cid == null) ? 0 : cid.hashCode());
   return result;
}
@Override
public boolean equals(Object obj) {
   if (this == obj)
    return true;
   if (obj == null)
    return false;
   if (getClass() != obj.getClass())
    return false;
   final Course other = (Course) obj;
   if (cid == null) {
    if (other.cid != null)
     return false;
   } else if (!cid.equals(other.cid))
    return false;
   return true;
}

}


Student.java实体类

package com.tarena.enrollment.biz.entity;

import java.util.HashSet;
import java.util.Set;

public class Student {
private Long oid;
private String sid;
private String name;

private Set cours=new HashSet();

public Student(){}

public Student(String sid, String name) {
   super();
   this.sid = sid;
   this.name = name;
}

public Student(String sid, String name, Set cours) {
   super();
   this.sid = sid;
   this.name = name;
   this.cours = cours;
}

public void registerCour(Course cour){
   cours.add(cour);
   cour.getStus().add(this);
}

public Long getOid() {
   return oid;
}

public void setOid(Long oid) {
   this.oid = oid;
}

public String getSid() {
   return sid;
}

public void setSid(String sid) {
   this.sid = sid;
}

public String getName() {
   return name;
}

public void setName(String name) {
   this.name = name;
}

public Set getCours() {
   return cours;
}

public void setCours(Set cours) {
   this.cours = cours;
}

@Override
public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((sid == null) ? 0 : sid.hashCode());
   return result;
}

@Override
public boolean equals(Object obj) {
   if (this == obj)
    return true;
   if (obj == null)
    return false;
   if (getClass() != obj.getClass())
    return false;
   final Student other = (Student) obj;
   if (sid == null) {
    if (other.sid != null)
     return false;
   } else if (!sid.equals(other.sid))
    return false;
   return true;
}

}

分享到:
评论

相关推荐

    Hibernate 实体映射实例

    注:为节省空间,程序中需要的jar包,均在HibernateManytoManyMapCascadingSave.zip\HibernateManytoManyMapCascadingSave\lib\ &lt;br&gt;Hibernate 多对多实体映射实例 &lt;br&gt;学习Hibernate 实体映射的映射的好帮手...

    Hibernate实体映射

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来...通过实践这些实例代码,可以加深对Hibernate实体映射的理解,并提升数据库操作的效率。

    hibernate 单向多对多关联映射练习

    本练习主要关注的是Hibernate中的单向多对多关联映射,这是一种常见的关系数据库设计模式,用于表示两个实体间复杂的关系。 在多对多关联中,两个实体类可以相互拥有多个实例,但只在一个方向上建立关联。例如,...

    Hibernate高级映射实例

    本实例主要探讨的是Hibernate的高级映射技术,包括单向一对一、单向多对一、单向一对多以及单向多对多这四种关系映射。 首先,我们来理解一下什么是映射。在Hibernate中,映射是将对象模型与关系数据库之间的桥梁,...

    hibernate 主键一对一映射(单向) 实例(java类)

    在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见的关系映射方式,它用于表示两个实体之间一对一的关联关系。在这种关系中,一个实体对应另一个实体的唯一实例。本实例将深入探讨如何在Hibernate...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

    Hibernate映射实例

    本实例主要探讨了Hibernate中的三种基本映射关系:一对一、一对多以及多对多,并且是基于SQL Server数据库进行实现的。以下是这些映射关系的详细解释: ### 一对一映射 一对一映射通常发生在两个实体之间存在唯一...

    hibernate实体关联关系映射

    ### Hibernate实体关联关系映射详解 #### 一、引言 Hibernate作为一种强大的对象关系映射(Object Relational Mapping,简称ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了持久化层的开发工作,...

    hibernate单向多对多映射(XML版)

    总结起来,Hibernate的单向多对多映射通过XML配置文件定义了实体之间的关系,使得在Java代码中处理数据库的多对多关联变得更加简单和直观。理解和熟练掌握这一映射方式,对于提升Java持久层开发的效率和质量至关重要...

    Hibernate XML配置表映射实例

    总结一下,Hibernate XML配置表映射实例主要涉及以下几点: 1. `hibernate.cfg.xml`配置文件用于设置数据库连接和SessionFactory。 2. `hbm.xml`文件定义了Java类与数据库表的映射关系。 3. 使用SessionFactory和...

    hibernate 多对多映射实例,学生 选课

    在这个“hibernate 多对多映射实例,学生 选课”项目中,我们将探讨如何使用Hibernate处理多对多关系,以及如何构建一个学生选课的系统。 首先,我们要理解多对多关系。在现实生活中,学生和课程之间就是一个典型的...

    hibernate对象关系映射实例

    标题“Hibernate对象关系映射实例”表明我们将探讨的是使用Hibernate框架进行对象关系映射(ORM)的实际应用。ORM是将数据库表结构映射为Java类对象的一种技术,它使得开发者可以使用面向对象的方式来操作数据库,而...

    商城数据库hibernate映射实例

    本文将深入探讨在实际项目中如何运用Hibernate进行商城数据库的映射实例。 首先,我们需要理解Hibernate的核心概念——实体(Entity)、持久化类(Persistent Class)和映射文件(Mapping File)。实体通常对应...

    Hibernate注解多对多映射小实例

    在这个小实例中,我们了解了如何使用Hibernate注解实现多对多映射,以及如何在代码中操作这些实体。通过这种方式,我们能够在Java应用程序中方便地管理数据库关系,而无需编写繁琐的SQL语句。这个例子展示了...

    Hibernate映射配置实例大全(详细总结)

    综上所述,"Hibernate映射配置实例大全"涵盖的内容广泛,包括基本的配置文件设置、实体类的XML和注解映射、集合映射、加载策略、事务管理和缓存配置等。通过深入学习和实践这些实例,开发者可以熟练地运用Hibernate...

    hibernate 一对多,两个实例项目

    总结,"hibernate 一对多,两个实例项目"旨在帮助开发者深入理解Hibernate中的一对多关系映射,并通过实际项目实践来提升技能。通过这两个实例,我们可以学习到如何配置、操作以及优化一对多关系,从而在实际开发中...

    Hibernate一对一关联映射(注解)

    本话题主要探讨的是Hibernate中的一对一关联映射,这是一种将数据库中的单个表映射到Java对象模型中单个类的关系映射技术。通过注解方式实现一对一关联映射,可以避免传统的XML配置文件,使得代码更加简洁、易读。 ...

    Hibernate实体层设计

    总结,Hibernate实体层设计是Java开发中非常重要的一环,理解并熟练掌握实体的定义、属性映射和关联映射,以及如何在实际项目中运用,能够极大地提升开发效率和代码质量。在设计实体层时,应充分考虑业务需求,合理...

    hibernate一对多、多对一、一对一、多对多配置实例

    本文将深入探讨Hibernate中的一对多、多对一、一对一以及多对多四种关系映射的配置实例,帮助开发者更好地理解和运用这些关系。 ### 一对多关系(One-to-Many) 在数据库设计中,一对多关系是最常见的一种关联,...

Global site tag (gtag.js) - Google Analytics