hibernate的关系映射和无关系型数据库

小白问个问题:
在hibernate中有多对一、一对一、一对多、多对多这样的关系,只要在hbm.xml文件中配置了,那么去生产数据表的时候就会给表创建外键
这个很好理解,但是我目前在开发中,我发现很多成熟的系统数据库并没有外键,而且架构师提倡不用外键来管理,这样hibernate的关系设计是不是就不符合现在系统设计得需要了?

1个回答

在数据库里可以不设主键或者外键来使用hibernate进行逻辑上的关联。架构师不提倡是因为在对数据库进行增删改的时候,可能出现脏数据。
现在关系型数据库用的领域还是很多,hibernate不会不符合的。不过对于一些中小型的系统,建议使用ibatis,较之hibernate用起来比较灵活,入门也快。
hibernate比较适合大型的项目,建议深入了解hibernate后再进行使用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用hibernate+注解实现各种关系映射
本文转自:http://blog.csdn.net/bigtree_3721/article/details/42343639 基本环境准备     我们先来看看一个具体的JPA工程示例。要运行这个示例,我们需要如下的类库和软件安装配置好:     类库: EclipseLink, mysql-connector-j     数据库: Mysql     开发环境:e
hibernate对象关系映射(基于注解)
1.OneToOne关系映射 OneToOne即一对一映射,
hibernate--关系映射归纳和总结
前言: hibernate关系映射十分重要,对于掌握hibernate是必备的知识,关系映射分为一对一 一对多 多对一 多对多  看起来关系关系复杂,但其实了解其中原理就可以灵活自如运用。 在了解详细分类之前,有一些点和关键系必须掌握其意义: cascade关键词:表示级联包括add update delete 一般情况不使用 不好。 作用:一般在保存对象时 需要先显
Hibernate对象关系映射(一)
Hibernate 的本质是对象关系映射,ORM实现了将对象的变化保存到数据库中。以前我们对关系表操作,执行增CRUD。现在我们不在对关系表进行操作,而是直接对对象操作。对象关系的映射有以下几种 基本图形 图1 一对一映射 分两种情况 主键 唯一外键 1主键  两个对象具有相同的主键,不再有额外字段维护他们的关系 图2  Person 和Card之间,他们的
hibernate七种对应关系映射
hibernate框架七种对应的关系映射(ORM)
Hibernate 一对多映射: inverse属性的作用
在映射一对多表关系的时候存在一个inverse的问题,一直以来对inverse不怎么了解,今天用到它想要弄明白,在网上看了无数个帖子还是不懂,最后终于看到一位高人的一篇帖子,解释得很透彻,终于彻底了解inverse的含义了,下面说说一对多表关系的应用和inverse详解: 以父与子关系为例:父亲可以有多个孩子,而孩子只能有一个父亲。那么反映到数据表是这样实现的: create table pa
Hibernate学习笔记(三)——Hibernate的关联关系映射
在数据库中存在四种关联关系映射,分别是一对一(one-to-one)、一对多(one-to-many)、多对一(many-to-one)和多对多(many-to-many),其中日常开发中比较常用的是一对多和多对一的映射,那么下面将分别通过几个实例来介绍一下一对多和多对一的映射。 一、一对多关系映射 什么叫做一对多关系映射呢?举个例子,就好比班级和学生,站在班级的角度来看,一个班级包含多个学生
【HIbernate框架学习】:Hibernate对象关系映射之一对一关联映射(一)
一对一关联映射在实际生活中是比较常见的,如人与身份证的关系,通过人这个对象可以找到身份证相关的信 息,也可以通过身份证这个对象找到人相关的信息。        有两种策略可以实现一对一的关联映射:        主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来 维护它们之间的关系,仅通过表的主键来关联;        唯一外键关联:外键关
Hibernate关联映射——对象的三种关系
Hibernate关联映射——对象的三种关系Hibernate框架基于ORM设计思想,它将关系型数据库中的表与我们java中的类进行映射,一个对象就对应着表中的一条记录,而表中的字段对应着类中的属性。数据库中表与表之间存在着三种关系,也就是系统设计中的三种实体关系。下面进行简单阐述。一对一创建表的原则有两种: 唯一外键对应 在任意一方添加一个外键来描述对应关系。如下图所示: 或者 主键对应
hibernate映射中inverse属性的使用
inverse常用于一对多双向关联关系中。 以Student(学生)和Class(班级)为例,它们之间的关系为一对多的关系,即一个学生只能属于一个班级,一个班级可以包含多个学生。 学生类定义代码: Class Student{ private int id; private String name; private Class class; //省略getter()和sett
Hibernate表关系映射之一对多映射
一、基本概述 在表中的一对多,是使用外键关联,通过一张表的一个键另一个表的外键来建立一多关系;而在类中表示为一个类中有一个集合属性包含对方类的很多对象,而在另一个类中,只包含前述类的一个对象,从而实现一对多关系的建立! 而在Hibernate中采用的是Set类型集合,使用和来实现。 对于一对多的映射关系可以分为两种情况:单向映射和双向映射。 单向映射:只能从一方访问到另一方,无法反向访问。
Hibernate集合映射、关联映射
集合映射开发流程:需求分析/数据库设计、项目设计/ 编码/测试/实施部署上线/验收 需求:用户购买, 填写地址! 数据库: 代码:// javabean设计 public class User { private int userId; private String userName; // 一个用户,对应的多个地址 private Set<String> add
ORM-对象关系映射
对象关系映射(Object Relational Mapping,简称ORM)是为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示着额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理。 实际应用中即在关系型数据库和业务实体对象之间作
Hibernate旅程(五)Hibernate映射--基本类映射和对象关系映射
回想一些我们在没有学习ssh的时候,我们建立数据库的表时,首先是数据库建模E-R图,然后再通过实体模型来建立关系模型,再建立相应的表。实体间存在三种关系,一对一,一对多(或者说多对一),多对多。而如今我们要根据类来映射相应的表,那只能是通过类与类之间的关系加上映射文件来映射数据库的表。我们学习UML建模,类与类之间存在五种关系,继承,实现,关联,依赖,聚合/组合,在hibernate中实体类之间的
对象/关系映射
对象/关系映射<br>—Hibernate<br>对象/关系映射<br>—Hibernate<br>对象/关系映射<br>—Hibernate<br>
hibernate 对象关系映射总结hibernate 对象关系映射总结
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
Hibernate(六)实现一对多、多对一映射关联关系
一对多、多对一这种关系在现实生活中很多,例如部门与员工的关系,学校里班级与学生的关系... 那么在具体的系统实现中如果i实现这种关联关系呢?这里以部门和员工的关系为例。 部门实体类 package test.hibernate.hbmOneToMany; import java.util.HashSet; import java.util.Set; public class Depart
SSH:Hibernate框架(七种关联关系映射及配置详解)
概念          基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用。   分类                                关联关系分为上述七种,但是由于相互之间有各种关系,可以简化,例如:多对一与一对多映射,只是侧重的角度不对而已。
【Hibernate框架学习】:Hibernate进阶之详解Hibernate配置文件和对象关系映射配置文件
Hibernate核心配置文件               我们先来看一个比较常见的hibernate.cfg.xml配置文件: <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hiber
SSH框架之Hibernate的关联映射之一对多、多对一映射
关联映射之一对多、多对一映射 一、需求: 部门与员工 一个部门有多个员工 【一对多】 多个员工,属于一个部门 【多对一】 二、逻辑分析: 三、代码实现 1、javabean及映射文件的配置: 1)Employee.java、Employee.hbm.xml 2)Dept.java、Dept.hbm.xml
Hibernate两种实体关系映射详解
版权出处:http://blog.csdn.net/lmb55/article/details/46545535。目录(?)[+] 实体类与数据库之间存在某种映射关系,Hibernate依据这种映射关系完成数据的存取,因此映射关系的配置在Hibernate中是最关键的。Hibernate支持xml配置文件与@注解配置两种方式。xml配置文件是最基础的配置,而@注解是Java的官方JPA(Java 
Hibernate入门之List 映射
这边介绍如果对象中包括List型态的属性时如何进行映像,首先我们假设我们要制作一个在线档案管理,使用者上载的文件名称可能是重复的 、具有相同名称,之前使用的Set不允许有重复的内容,所以这次我们改用List,我们的User类别撰写如下: User.java package onlyfun.caterpillar; import java.util.*; public class User { pr
对象/关系数据库映射(ORM)
   ORM的全称是:Object Relational Mapping,即对象/关系数据库映射.       当使用一种面向对象的编程语言来进行应用开发时,从项目一开始就采用的是面向对象分析,面向对象设计,面向对象编程,但到了持久层数据库访问时,又必须重返关系数据库的访问方式,这是一种非常糟糕的感觉.于是人们需要一种工具,它可以把关系型数据库包装成面向对象的模型.它就是ORM.    ORM框架...
Hibernate 关系映射 (一对一,一对多,多对多)
一、概念: 关系:名词,事物之间相互作用、相互联系的状态。 关联:名词:表示对象(数据库表)之间的关系;动词:将对象(数据库表)之间通过某种方式联系起来。 映射:将一种形式转化为另一种形式,包括关系。 级联:动词,有关系的双方中操作一方,另一方也将采取一些动作。   值类型:对象不具备数据库同一性,属于一个实体实例其持久化状态被嵌入到所拥有的实体的表行中,没有标识符。 实体类型:具有
hibernate使用关联映射的优劣比较:为什么用Hibernate时一定要做关联映射?
http://drinkjava.javaeye.com/blog/82107?page=2#comments读过上文以后有很多感慨:技术上的、心情上的。作者提出了一种迥异的、全新的hibernate使用方法。可是如果都这样做系统,那还怎么显示出对OR精通的各位牛人的价值呢?怎么能21世纪还是用ER模型呢? 所以作者的文章当然得不到javaeye各位"大拿"、“主流”的承认
怎么在Hibernate实体间建立映射关系
在之前的文章中,我们已经了解了Hibernate实体的四种持久状态,我们注意到当标注了特定的注解之后Hibernate可以标识java 对象为持久状态。否则他们就是普通的java对象没有和数据库由直接的关系。当我们在java类上标注了JPA注解并使他们成为持久实体之后,我们面对的一个问题就是两个实体间可以有一种关系而且必须一个实体引用另一个实体,以一种直接或者间接的方式,在我们创建两个实体的引用之
hibernate关系映射和性能优化
1.一对多            cascade=“save-update”>                    属性注释: name:设定待映射持久化类的属性名。 cascade:设定级联操作的程度。 key 子属性:设定与所关联的持久化类对应的标的外键。 one-to-many子属性:设定所关联的持久化类。 总结: 在一对多的时候,属性声明成Set还是List呢?
Hibernate 配置文件中 inverse 理解
1、含义: inverse="true"就是反转控制器=真;也就是由对方控制, inverse="false"就是反转控制器=假;也就是不用对方控制,由自己控制 2、到底在哪用inverse="ture"?       “set的inverse属性决定是否把对set的改动反映到数据库中去。inverse=false————反映;inverse=true————不反映”inverse属性默认
hibernate关系映射导致的json解析无限循环问题解决
在使用Gson序列化数据集合为json时,出现了栈溢出异常,发现Gson在不断调用解析方法,造成栈空间不足。但是要解析的数据并没有那么多;后来尝试使用@ResponseBody注解,也就是jackson解析框架,可以返回json,但是发现返回的json数据非常大并且格式错误(由于双向映射导致json循环拼接而过大,无法返回完整数据)。经过排查,发现是由于使用了hibernate的一对多双向关系映射...
Hibernate各种关联映射关系梳理
Hibernate各种关联映射关系梳理 多对一的单向关联关系 1.      了解表结构及其关系 采用两张表作为今天的样表:   2.      了解类结构和映射文件: 有两个类: Street类的映射文件: Street类的类结构:   District类的映射文件: District类的类结构: 梳理关系: Dist
对象关系映射文件
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
Hibernate对象关联映射
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。多对一单向关系映射:student-classespublic class Classes implements Serializable{ private Integer cid; private String cname; priva
Hibernate(七)实现多对多关联映射关系
直接以老师与学生的关系为例。在多对多关联关系中,其中一方都可通过Set保留另一方的所有信息,这样的关联是双向关联。在多对多关联关系中,也只能是双向关联。老师和学生分别对应一张表,通过一张有双方id的中间表来维护多对多的关联。
【Hibernate学习笔记】映射聚合关系和组合关系
聚合:是整体与部分的关系,部分可以离开整体而单独存在。如大雁和雁群,大雁离开雁群,也可以单独存在。         【UML表示法】带空心的菱形的实线。         【箭头指向】空心菱形指向整体。           组合:也是整体与部分的关系,但部分不能离开整体而单独存在。如鸟和翅膀,翅膀不能作为单独的个体存在。         【UML表示法】
hibernater 对实体关联
hibernater 对实体关联
Hibernate学习大全有代码
Hibernate关系映射 Hibernate主键策略与属性 Hibernate集合映射
【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)
两个实体对象之间是一对一的关联映射,即一个对象只能与另外唯一的一个对象相对应。例如:一个人(Person)只有一张身份证(IdCard)。
(经典)Hibernate多对多关系映射(五)
多对多关系是产生在三张表的关系中的,必须有一张中间表,必须保证中间表只有两个字段,必须是复合主键,必须是另两张表的外键。 如果按照多对多关系来设计类,例如:学生选课 这里只创建学生和课程类,中间表不生成对应的pojo。 类中通过以下方式表示关系: 1)  学生会选择多门课程,因此在学生类中包含了多个课程类的对象,使用Set集合来保存。 2)  一门课程有多个学生选择,因此课程类中也要包含
Hibernate对象关系映射详解之“一对多”关系映射
Hibernate对象关系映射详解之“一对多”关系映射 之前学习Hibernate框架的时候,对这七大关系映射一直是云里雾里的,虽然可以仿照写出代码,但是不能独立编写出来。鉴于工作中这个知识点使用的几率还是非常大的,所以花了一点时间静下心来学习了一下,在这里写下一点学习笔记和大家交流。欢迎大家指点交流!(下面的笔记以及所有的示例都是使用注解) 我理解的关联映射就是将关联关系
Hibernate关系映射
Hibernate关系映射
浅谈JavaEE中的Hibernate中的四种关系映射(三)
今天我们一起来探讨一下有关Hibernate四种关系映射,大家可能会有疑惑,关系映射不就是只有三种(一对一,一对多,多对多)吗?这里我们再多说一个继承映射关系,虽然它使用频繁度没有前三个那么多,但是它在一些特定情况下,还是非常有用的,至于有什么用下面马上就要讲。这些关系映射实际上就是对应着关系型数据库中的几种关系的类型。我们都知道Hibernate的作用是将面向关系数据操作,转换成面向对象的操作,
【Hibernate框架】三种继承映射
大家都知道,Hibernate作为ORM框架的一个具体实现,最大的一个优点就是是我们的开发更加的能体现出“面向对象”的思想。在面向对象开发中,类与类之间是可以相互继承的(单向继承),而Hibernate中也对这种继承关系提供了自己风格的封装,这就是我们接下来要介绍的Hibernate继承映射的三种策略:
Java EE五大框架之 Hibernate 4 ----- Hibernate关联关系映射
1 技术分析之Hibernate的关联关系映射之一对多映射因为客户和联系人是一对多的关系,在有客户的情况下,完成联系人的添加保存操作1.1  JavaWEB中一对多的设计及其建表原则        外键可以是null,但是不能是另一个表主键不存在的值。1.2  先导入SQL的建表语句1.3  编写客户和联系人的JavaBean程序(注意一对多的编写规则) * 客户的JavaBean如下 pu...
hibernate 双向关联(为什么不死循环)
本文是想通过例子,证明hibernate双向多对多的情况下,为什么相互依赖了,还没有死循环。 customers : orders = n : n,中间的关系表是 customers_orders_link。 Customers 类:      private Long id;      private String userName;      private Set orde
Hibernate关联映射——一对多(多对一)
Hibernate关联映射——一对多(多对一)我们以客户(Customer)与订单(Order)为例来讲解Hibernate关联映射中的一对多关联关系。 首先肯定是搭建好Hibernate的开发环境,我在此也不过多赘述,读者自行实践。接着在src目录下创建一个cn.itheima.oneToMany包,并在该包下创建两个实体类,如下: 客户类// 客户 ---- 一的一方 public class
Hibernate阶段性总结(一)
hibernate它是一个实现对JDBC轻量级封装的ORM(对象关系映射)的框架。处于项目的持久层。主要学习它的hibernate api和hibernate.cfg.xml,对象关系映射文件 这边介绍下项目的组成部分: WEB层   业务逻辑层(调用HQL语句去操纵持久层,这样就不用去关心到底使用哪种数据库,持久层会自己去判断)  DAO层  持久层(对JDBC进行轻量级封装,
Hibernate中使用JPA(注解)配置对象关系映射
java中注解也是一大特点,平时进行单元测试时我们用过@Test注解进行测试 JPA就是java专门针对持久层框架进行设计的一套规范 JPA:Java Persistence API,其实它也就是一堆接口,就想JDBC一样,不同的框架只要遵循这同一套规范就可以在java环境中使用。 我们都指定在使用Hibernate的时候我们要写很多的.xml配置文件,xxx.hbm.xml对象关系映射文件
java hibenate
Hibernate概述 Hibernate应用基础 Hibernate关系映射 Hibernate高级功能
hibernate注解案例
Hibernate 的注解学习 ExportDBAnnotation HibernateAnnotationUtils 【一对一】关系映射【一对多】关系映射 【多对多】关系映射 【composite复合主键】关系映射【component组件】关系映射
开源对象关系映射框架Hibernate知识培训
开源对象关系映射框架Hibernate知识培训开源对象关系映射框架Hibernate知识培训
相关热词 c# singleton c#中类的默认值是 c#各种进制之间的转换 c# 正则表达式保留汉字 c#后台跨域 c#基础代码大全 c#指定combox选择 c#关系 mono c# 相差毫秒 用c#做一个简易计算器
立即提问