最近在做毕业设计,其中包含了好友关系的设计,经过几天的请教和查资料,终于有了个半成品的好友关系!
废话不多说,直接上代码:
public class User {
private int id;
private String username;
private String name;
private Set<User> friends = new HashSet<User>();
private Set<User> parent = new HashSet<User>();
getter/setter 方法略
}
一个User可以添加多个User为好友,并且一个User可以被多个User添加为好友。在Hibernate中,可以用自身多对多关联实现。配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User">
<id name="id" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="username" type="string"></property>
<property name="name" type="string"></property>
<set name="friends" inverse="false" cascade="all">
<key>
<column name="userid"></column>
</key>
<many-to-many class="User" column="friendid"></many-to-many>
</set>
</class>
</hibernate-mapping>
生成的用户表(User):
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
中间表friends:
CREATE TABLE `friends` (
`userid` int(11) NOT NULL,
`friendid` int(11) NOT NULL,
PRIMARY KEY (`userid`,`friendid`),
KEY `FKDC3B4995E9C283D0` (`friendid`),
KEY `FKDC3B4995CBFCDBD` (`userid`),
CONSTRAINT `FKDC3B4995CBFCDBD` FOREIGN KEY (`userid`) REFERENCES `user` (`id`),
CONSTRAINT `FKDC3B4995E9C283D0` FOREIGN KEY (`friendid`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
至此已基本成型,随项目持续更新...
由于笔者水平有限,如有错误,请联系我批评指正。
分享到:
相关推荐
在这个“Hibernate一对多双向自身关联demo代码”中,我们将深入理解如何实现一个实体类与其自身进行一对多的双向关联。这种关联在实际应用中常见于例如用户的朋友关系、员工的上下级关系等场景。 首先,让我们了解...
本文将深入探讨“Hibernate自身关联一对多实例(树形结构)”这一主题,这在构建具有层次结构的数据模型时尤其常见,例如组织结构、地区树或者商品分类等。 首先,我们需要理解Hibernate的核心概念。Hibernate允许...
在处理多表关联时,Hibernate提供了多种关联类型,包括一对一(OneToOne),多对一(ManyToOne),一对多(OneToMany)和多对多(ManyToMany)。本文将详细介绍这些关联配置以及如何解决可能出现的错误。 **一对一关联...
9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...
总结起来,Hibernate的单向多对多映射通过XML配置文件定义了实体之间的关系,使得在Java代码中处理数据库的多对多关联变得更加简单和直观。理解和熟练掌握这一映射方式,对于提升Java持久层开发的效率和质量至关重要...
本实例将聚焦于Hibernate中的一对多关系,这是一种常见的关联类型,尤其是在处理具有层次结构的数据时。双向一对多关系意味着一个实体可以拥有多个相关联的实体,同时每个相关联的实体也可以回指到原始实体。 **...
而`@ManyToOne`表示多对一关系,`@JoinColumn`指定了外键列名。 ### 2. 源代码实现 在实际应用中,我们可能需要在服务层或控制器层处理一对多的增删查改操作。以下是一个简单的例子: ```java @Service public ...
总结来说,Hibernate的关联关系配置涵盖了从一对一到多对多的各种情况,提供了丰富的选项来满足不同业务需求。理解并熟练掌握这些关联关系及其配置,能帮助开发者更高效地进行数据操作,提升开发效率。在实际应用中...
hibernate一对多双项自身关联关系示例 带数据库ddl
在这个“hibernate关联关系实例”中,我们将深入探讨四种基本的关联关系:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many),同时也会涉及Hibernate查询语言(HQL)...
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,这个是xml配置的例子
在Hibernate中,通常通过创建一个关联表来实现多对多关系。例如,一个学生可以选修多门课程,一门课程也可以被多名学生选修。 3. **联合主键**: 联合主键指的是多个字段共同作为表的主键。在Hibernate中,可以通过...
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...
本篇将详细讲解Hibernate中的一对多关联映射,以及如何在实际项目中进行配置和使用。 一对多关联在数据库设计中很常见,例如一个学生可以对应多个课程,一个部门可以有多名员工等。在Hibernate中,一对多关联是通过...
标题中的“myeclipse试用小记----Hibernate多对一自身关联(3)”表明了这篇内容是关于MyEclipse IDE的使用体验,特别聚焦在Hibernate框架中的多对一自身关联关系的实践与理解。Hibernate是Java开发中常用的一个对象...
在Java持久化领域,Hibernate是一个广泛应用的ORM(对象...在实际项目中,这种关联模式常用于构建社交网络、组织结构、多对多关系的中间表等多种场景。因此,深入学习和实践这部分内容对于提升Java开发能力非常有帮助。
3. **查询关联**:可以通过JPQL(Java Persistence Query Language)或HQL(Hibernate Query Language)来查询多对多关系。 **四、多对多关系的优化** 1. **缓存策略**:使用二级缓存可以提高多对多关系的查询效率...
在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一双向主键关联”。这种关联类型是数据库设计中的常见模式,它允许两个实体类之间通过共享相同的主键来建立关联。在Java应用中,...
本案例主要关注的是Hibernate框架中的多对多映射关系,这是一种常见的数据库实体关联方式,尤其在处理复杂数据模型时非常有用。 Hibernate是Java领域的一个持久化框架,它允许开发者通过面向对象的方式来操作数据库...
本教程将详细讲解如何使用Hibernate来实现MySQL数据库中的一对多和多对一的映射关系。 ### 一、Hibernate简介 Hibernate是一个开源的ORM框架,它通过XML配置文件或者注解将Java对象映射到关系数据库表,实现了对象...