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 多对多操作”表明了本文将探讨的是在Java编程中,使用Hibernate框架处理数据库中的多对多关联关系。Hibernate是Java领域广泛使用的对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理...
本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一个实际的demo演示它们在增删查改操作中的应用。 首先,我们要理解什么是数据库的关联关系。在数据库设计中,我们经常遇到一种情况,即一个实体可能与...
5. **操作关联**:在代码中,可以通过Hibernate的Session接口进行添加、删除、查询等操作,以维护多对多关系。 **数据库代码** 数据库代码部分可能包括创建相关表和中间表的SQL语句,以及填充数据的INSERT语句。...
`hibernate_manytomany_1.jpg`和`hibernate_manytomany_2.jpg`可能包含了多对多关联的配置或操作示意图,而`Hibernate_manytomanyTest.rar`和`accpDB.rar`则可能是相关的源代码或数据库文件,供学习者下载并运行测试...
本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用中使用Hibernate处理一对多的关系映射。这里我们将深入探讨 Hibernate 的一对多关系、配置以及在实际项目中的应用。 首先,一对多关系在数据库中很常见,...
在这个" Hibernate级联操作一对多demo "中,我们将探讨如何在一对多的关系中应用级联操作。 一对多关系是数据库中常见的关系类型,它表示一个实体(如部门)可以有多个相关实体(如员工)。在Hibernate中,这种关系...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系模型,它用于处理两个实体类之间存在多个对应关系的情况。这篇博客"hibernate多对多关联映射(单项关联)"深入探讨了如何在Hibernate中实现这种映射...
【标题】:“Hibernate多对多” 在Java编程领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使开发者能够用Java对象来操作数据库数据。"Hibernate多对多"指的是在Hibernate中处理两...
五、操作多对多关系 在实际应用中,我们可以通过Hibernate提供的API来添加、删除和查找多对多关系。例如,向`Student`添加一门`Course`,可以使用`addCourse(Course course)`方法;删除则通过`removeCourse(Course ...
在这个“hibernate 多对多映射实例,学生 选课”项目中,我们将探讨如何使用Hibernate处理多对多关系,以及如何构建一个学生选课的系统。 首先,我们要理解多对多关系。在现实生活中,学生和课程之间就是一个典型的...
在本主题中,我们将深入探讨使用Hibernate注解来实现JPA的一对多、多对多和多对一的关系映射。 1. **一对多关系**: 在现实世界中,一个老师可以教多个学生,或者一个班级可以包含多个学生,这就是典型的一对多...
**标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
通过这个“Hibernate学习:单向多对一关联 工程”,你可以实际操作并理解如何在项目中配置和使用单向多对一关联。这将帮助你更好地掌握Hibernate的关联映射,提升数据库操作的效率和代码的可维护性。项目的源代码`...
Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...
在这个“Struts+Hibernate一对多的管理系统”项目中,我们将深入理解这两个框架如何协同工作,构建出一个具备一对多关系的数据管理应用。在Java Web开发中,一对多关系非常常见,比如在一个用户可以拥有多个订单的...
“Hibernate 一对一,一对多,多对多例子” 指的是使用Hibernate框架实现数据库中不同关联关系的示例。Hibernate是一个Java持久化框架,它提供了对象关系映射(ORM)功能,使得开发人员可以方便地在Java对象和关系...
对于多表操作,Hibernate支持一对多、多对一、一对一和多对多等关联关系。通过注解或XML配置,可以定义表间的关联,例如`@ManyToOne`、`@OneToMany`、`@OneToOne`和`@ManyToMany`。在操作时,可以通过SessionFactory...
总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...