`

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 XML配置表映射实例

    Hibernate XML配置表映射实例

    Hibernate实体映射

    里面包含Hibernate实体映射的具体实例代码,还有相关教程笔记,喜欢的可以学习学习。

    hibernate多对一、一对一、一对多、多对多映射的理解(经典)

    hibernate中对实体类映射文件的理解(多对一、一对一、一对多、多对多),文章给出了实例类图、数据表结构、相关测试以及说明。

    Hibernate3.1_学习源码

    配置文件:只配置父类的映射文件,在其中加入joined-subclass将两个子类实体映射关系添加 2) 数据库表:一张表,包括公共字段、特有字段、区分字段 实体层设计:与第一种方法设计一样,设计三个实体类,分父类和...

    Hibernate Web应用的开发步骤

    (4)利用Hibernate的第三方工具或Eclipse的有关插件从数据库中创建出相应的实体对象及其ORM映射文件。 (5)创建Hibernate的SessionFactory类。 (6)通过SessionFactory创建Session实例。 (7)通过创建的...

    整合jsf hibernate spring实例

    hibernate: 管理实体关系映射 spring:数据源配置与获得session IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 jsf 标签应用 jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定

    Hibernate注解编程实例

    * hibernate注释说明: * @Entity —— 将一个类声明为一个实体bean(即一个持久化POJO类) * @Id —— 注解声明了该实体...* @Table —— 注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字

    Hibernate+中文文档

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2....

    Hibernate映射继承关系的三种方案.docx

    在一些项目中,会采用集成的关系来定义数据库实体类,比如:人(Person)与学生(Student),学生来源与人,所以...在上边的例子中,学生集成了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到。

    HibernateAPI中文版.chm

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2....

    hibernate3.2中文文档(chm格式)

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2....

    Hibernate3实例

    Hibernate3实战in MyEclipse。本实例是一个最典型的实体“雇员”完整的持久化操作。借助MyEclipse工具自动生成配置文件、持久化类、映射文件和与业务逻辑之间的中间层DAO类。

    Hibernate实战(第2版 中文高清版)

     9.4.2 使用脱管的实体实例   9.5 在EJB组件中使用Java Persistence   9.5.1 注入EntityManager   9.5.2 查找EntityManager   9.5.3 访问EntityManagerFactory   9.6 小结   第10章 事务和并发   ...

    Hibernate从实践到精通

    本软件用具体的实例演示了Hibernate基本原理,继承映射,集合映射,实体映射,Ssssion与Critria,事务管理等核心技术,是用户快速掌握和使用Hibernate最佳教材

    Hibernate中文详细学习文档

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2....

    Hibernate 中文 html 帮助文档

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2. ...

    Hibernate注释大全收藏

    上述实体映射到数据库中的时候对应 Order 实体Bean, 其具有 id, lastUpdate, lastUpdater 三个属性。如果没有@MappedSuperclass 注解,则父类中属性忽略,这是 Order 实体 Bean 只有 id 一个属性。 映射实体Bean的...

    最全Hibernate 参考文档

    23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. "Typed" one-to-one association 23.4.2. ...

    Hibernate教程

    24. 示例:复杂映射实例 24.1. Employer(雇主)/Employee(雇员) 24.2. Author(作家)/Work(作品) 24.3. Customer(客户)/Order(订单)/Product(产品) 24.4. 杂例 24.4.1. "Typed" one-to-one association 24.4.2....

Global site tag (gtag.js) - Google Analytics