`
dreamer_0924
  • 浏览: 180245 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

hibernate多对多操作

阅读更多

SQL(MY SQL):
create table tgroup (
   group_id int not null auto_increment,
   name varchar(16) not null default '',
   primary key   (group_id)
) type=innodb;

create table trole (
   role_id int not null auto_increment,
   name varchar(16) not null default '',  
   primary key   (role_id)
) type=innodb;

create table tgroup_role (
   group_id int not null,
   role_id int not null,
   primary key(group_id, role_id),
   index (group_id),
   foreign key (group_id) references tgroup(group_id),
   index (role_id),
   foreign key (role_id) references trole(role_id)
) type=innodb;

Group 类:
package ivan.hibernate.many2many;
public class Group {
    private int id;
    private String name;
    private Set roles = new HashSet();
    ...
}

Group.hbm.xml:
<hibernate-mapping>
     <class name="ivan.hibernate.many2many.Group" table="tgroup">
         <id name="id" column="group_id" unsaved-value="0">
             <generator class="increment"/>
         </id>
         <property name="name" type="string"/>       
         <set name="roles"
              table="tgroup_role"
             cascade="save-update">             
              <key column="group_id"/>
              <many-to-many class="ivan.hibernate.many2many.Role"
                            column="role_id"/>
        </set>
     </class>
</hibernate-mapping>

Role 类:
package ivan.hibernate.many2many;
public class Role {
    private int id;
    private String name;
    private Set groups = new HashSet();
    ...
}

Role.hbm.xml:
<hibernate-mapping>
     <class name="ivan.hibernate.many2many.Role" table="trole">
         <id name="id" column="role_id" unsaved-value="0">
             <generator class="increment"/>
         </id>
         <property name="name" type="string"/>       
         <set name="groups"
              table="tgroup_role"
             inverse="true"
             cascade="save-update">             
              <key column="role_id"/>
              <many-to-many class="ivan.hibernate.many2many.Group"
                            column="group_id"/>
   </set>
     </class>
</hibernate-mapping>

hibernate.cfg.xml

public class Test {

public static void main(String[] args) throws HibernateException {
     
   Role role1 = new Role();
   role1.setName("Role1");
   Role role2 = new Role();
   role2.setName("Role2");
   Role role3 = new Role();
   role3.setName("Role3");
   Group group1 = new Group();
   group1.setName("group1");
   Group group2 = new Group();
   group2.setName("group2");
   Group group3 = new Group();
   group3.setName("group3");
   group1.getRoles().add(role1);
   group1.getRoles().add(role2);
   group2.getRoles().add(role2);
   group2.getRoles().add(role3);
   group3.getRoles().add(role1);
   group3.getRoles().add(role3);
   role1.getGroups().add(group1);
   role1.getGroups().add(group3);
   role2.getGroups().add(group1);
   role2.getGroups().add(group2);
   role3.getGroups().add(group2);
   role3.getGroups().add(group3);

   SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
   Session session = sessionFactory.openSession();
   Transaction tx= session.beginTransaction();
   session.save(role1);
   session.save(role2);
   session.save(role3);
   session.save(group1);
   session.save(group2);
   session.save(group3);
   tx.commit();
   session.close();
   sessionFactory.close();
}
}

分享到:
评论

相关推荐

    hibernate 多对多操作

    标题“hibernate 多对多操作”表明了本文将探讨的是在Java编程中,使用Hibernate框架处理数据库中的多对多关联关系。Hibernate是Java领域广泛使用的对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理...

    hibernate(一对多,多对一映射)操作

    本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一个实际的demo演示它们在增删查改操作中的应用。 首先,我们要理解什么是数据库的关联关系。在数据库设计中,我们经常遇到一种情况,即一个实体可能与...

    Hibernate多对多实例+数据库代码

    5. **操作关联**:在代码中,可以通过Hibernate的Session接口进行添加、删除、查询等操作,以维护多对多关系。 **数据库代码** 数据库代码部分可能包括创建相关表和中间表的SQL语句,以及填充数据的INSERT语句。...

    Hibernate多对多关联添加及查询示例

    `hibernate_manytomany_1.jpg`和`hibernate_manytomany_2.jpg`可能包含了多对多关联的配置或操作示意图,而`Hibernate_manytomanyTest.rar`和`accpDB.rar`则可能是相关的源代码或数据库文件,供学习者下载并运行测试...

    hibernate一对多项目

    本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用中使用Hibernate处理一对多的关系映射。这里我们将深入探讨 Hibernate 的一对多关系、配置以及在实际项目中的应用。 首先,一对多关系在数据库中很常见,...

    Hibernate级联操作一对多demo

    在这个" Hibernate级联操作一对多demo "中,我们将探讨如何在一对多的关系中应用级联操作。 一对多关系是数据库中常见的关系类型,它表示一个实体(如部门)可以有多个相关实体(如员工)。在Hibernate中,这种关系...

    hibernate多对多关联映射(单项关联)

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...

    hibernate多对多

    【标题】:“Hibernate多对多” 在Java编程领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使开发者能够用Java对象来操作数据库数据。"Hibernate多对多"指的是在Hibernate中处理两...

    hibernate 映射关系学习入门 多对多实体映射

    五、操作多对多关系 在实际应用中,我们可以通过Hibernate提供的API来添加、删除和查找多对多关系。例如,向`Student`添加一门`Course`,可以使用`addCourse(Course course)`方法;删除则通过`removeCourse(Course ...

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

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

    Hibernate annotation JPA 一对多,多对多

    在本主题中,我们将深入探讨使用Hibernate注解来实现JPA的一对多、多对多和多对一的关系映射。 1. **一对多关系**: 在现实世界中,一个老师可以教多个学生,或者一个班级可以包含多个学生,这就是典型的一对多...

    Hibernate双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

    Hibernate与JDBC对于数据库CRUD操作性能示例

    Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源

    Hibernate学习:单向多对一关联 工程

    通过这个“Hibernate学习:单向多对一关联 工程”,你可以实际操作并理解如何在项目中配置和使用单向多对一关联。这将帮助你更好地掌握Hibernate的关联映射,提升数据库操作的效率和代码的可维护性。项目的源代码`...

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

    通过这三个测试用例,我们可以看到多对一映射的使用方法和 Hibernate 中级联操作的使用。 一对一映射 一对一映射是指两个实体对象之间的一对一映射关系。在 Hibernate 中,一对一映射使用 `&lt;one-to-one&gt;` 元素来...

    Hibernate操作持久化对象

    Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...

    struts+hibernate一对多的管理系统

    在这个“Struts+Hibernate一对多的管理系统”项目中,我们将深入理解这两个框架如何协同工作,构建出一个具备一对多关系的数据管理应用。在Java Web开发中,一对多关系非常常见,比如在一个用户可以拥有多个订单的...

    Hibernate 一对一,一对多,多对多例子

    “Hibernate 一对一,一对多,多对多例子” 指的是使用Hibernate框架实现数据库中不同关联关系的示例。Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,使得开发人员可以方便地在Java对象和关系...

    struts2+hibernate+spring多表操作示例

    对于多表操作,Hibernate支持一对多、多对一、一对一和多对多等关联关系。通过注解或XML配置,可以定义表间的关联,例如`@ManyToOne`、`@OneToMany`、`@OneToOne`和`@ManyToMany`。在操作时,可以通过SessionFactory...

    hibernate基于主外键的一对多/多对一关联

    总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...

Global site tag (gtag.js) - Google Analytics