hibernate配置的某个实体的hbm文件需要和数据库中的表一一对应吗

留香宝宝 2018-01-13 11:11:19
如题:

hibernate中为某个实体类配置的.hbm文件需要和数据库中对应的表一一对应吗,即hbm文件是否需要和表一一对应, 表中列是否可以多于hbm文件?

如果多了是否会出错?
...全文
749 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
drfxiaoliuzi 2018-02-24
  • 打赏
  • 举报
回复
看了半天没看懂是啥。 https://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example/ 强答一波:不过我的理解,貌似只要你不改变原来的字段的名字,让原来的字段名字可以被xml的索引到,就是可以改动的表结构的,比如新增加一列FieldTest0,因为配置文件中没有,所以加了相当于没加。。。因为配置文件中,相当于这列是不存在的。但是如果你改动原来的字段,如果配置文件没有重新生成,那貌似肯定是不行的。 但是,如果重新生成hbm配置文件,是否create时候会把新增加的字段加入进来就不好说了。 最后弱弱问一句:为啥会有这种让配置和db不一致的需求呢,只在表里加,不想在配置里使用?
留香宝宝 2018-01-14
  • 打赏
  • 举报
回复
在本地测试了一下 1.最初数据库未建表通过设置参数 <property name="hbm2ddl.auto">update</property>自动 生成了一个按hbm配置的表 2.手动修改数据库中表结构,多加了一列,允许为空 3.注释掉 <property name="hbm2ddl.auto">update</property>, 通过session query 、save 均未报错 出现问题。 所以是可以表结构与hbm不一致对吧
引用 1 楼 computerclass 的回复:
hibernate 文档上有说明呀
留香宝宝 2018-01-13
  • 打赏
  • 举报
回复
初学 没找到... 能告诉下具体是在哪里吗
computerclass 2018-01-13
  • 打赏
  • 举报
回复
hibernate 文档上有说明呀
第1章 Java应用分层架构及软件模型 1 本章介绍软件的分层结构、关系数据模型和域模型等概念。Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 关系数据模型 8 1.2.3 域模型 10 1.2.4 域对象 10 1.2.5 域对象之间的关系 11 1.2.6 域对象的持久化概念 17 1.3 小结 19 1.4 思考题 19 第2章 Java对象持久化技术概述 21 业务数据在内存现为实体域对象形式,而在关系数据库现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库。 2.1 直接通过JDBC API来持久化实体域对象 21 .2.2 ORM简介 27 2.2.1 对象-关系映射的概念29 2.2.2 ORM间件的基本使用方法 31 2.2.3 常用的ORM间件 33 2.3 实体域对象的其他持久化模式 34 2.3.1 主动域对象模式 35 2.3.2 JDO模式 37 2.3.3 CMP模式 37 2.4 Hibernate API简介 38 2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的文档类型定义(DTD) 52 3.4.2 把Customer持久化类映射到CUSTOMERS 54 3.5 通过Hibernate API操纵数据库 58 3.5.1 Hibernate的初始化 61 3.5.2 访问Hibernate的Session接口 63 3.6 运行helloapp应用 67 3.6.1 创建运行本书范例的系统环境 67 3.6.2 创建helloapp应用的目录结构 72 3.6.3 把helloapp应用作为独立应用程序运行 73 3.6.4 把helloapp应用作为Java Web应用运行 77 3.7 小结 78 3.8 思考题 80 第4章 hbm2java和hbm2ddl工具 83 本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 93 4.4 运行hbm2ddl工具 94 4.5 使用XML格式的配置文件 96 4.6 小结 97 4.7 思考题 98 第5章 对象-关系映射基础 101 本章主要介绍单个持久化类与单个数据库之间进行映射的方法,尤其是当持久化类的属性不和数据库的字段一一对应时的映射技巧。 5.1 持久化类的属性及访问方法 101 5.1.1 基本类型属性和包装类型属性 102 5.1.2 Hibernate访问持久化类属性的策略 104 5.1.3 在持久化类的访问方法加入程序逻辑 104 5.1.4 设置派生属性 107 5.1.5 控制insert和update语句 108 5.2 处理SQL引用标识符 109 5.3 创建命名策略 110 5.4 设置数据库Schema 112 5.5 设置类的包名 113 5.6 运行本章的范例程序 114 5.7 小结 120 5.8 思考题 121 第6章 映射对象标识符 123 本章主要介绍关系数据库的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 6.1.2 从序列(Sequence)获取自动增长的标识符 124 6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo标识符生成器 135 6.4.5 native标识符生成器 137 6.5 映射自然主键 138 6.5.1 映射单个自然主键 138 6.5.2 映射复合自然主键 140 6.6 小结 143 6.7 思考题 144 第7章 映射一对多关联关系 147 本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 8.2.2 脏检查及清理缓存的机制 184 8.3 Java对象在Hibernate 持久化层的状态 187 8.3.1 临时对象的特征 188 8.3.2 持久化对象的特征 189 8.3.3 被删除对象的特征 190 8.3.4 游离对象的特征 191 8.4 Session接口的详细用法 191 8.4.1 Session的save()和persist()方法 191 8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate()方法 201 8.5 级联操纵对象图 202 8.5.1 级联保存临时对象 206 8.5.2 更新持久化对象 207 8.5.3 持久化临时对象 207 8.5.4 更新游离对象 209 8.5.5 遍历对象图 210 8.6 小结 211 8.7 思考题 211
第1章 Java应用分层架构及软件模型 1 本章介绍软件的分层结构、关系数据模型和域模型等概念。Hibernate位于持久化层,是域模型和关系数据模型之间的桥梁。 1.1 应用程序的分层体系结构 1 1.1.1 区分物理层和逻辑层 2 1.1.2 软件层的特征 3 1.1.3 软件分层的优点 4 1.1.4 软件分层的缺点 4 1.1.5 Java应用的持久化层 5 1.2 软件的模型 6 1.2.1 概念模型 7 1.2.2 关系数据模型 8 1.2.3 域模型 10 1.2.4 域对象 10 1.2.5 域对象之间的关系 11 1.2.6 域对象的持久化概念 17 1.3 小结 19 1.4 思考题 19 第2章 Java对象持久化技术概述 21 业务数据在内存现为实体域对象形式,而在关系数据库现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库。 2.1 直接通过JDBC API来持久化实体域对象 21 .2.2 ORM简介 27 2.2.1 对象-关系映射的概念29 2.2.2 ORM间件的基本使用方法 31 2.2.3 常用的ORM间件 33 2.3 实体域对象的其他持久化模式 34 2.3.1 主动域对象模式 35 2.3.2 JDO模式 37 2.3.3 CMP模式 37 2.4 Hibernate API简介 38 2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系映射文件 52 3.4.1 映射文件的文档类型定义(DTD) 52 3.4.2 把Customer持久化类映射到CUSTOMERS 54 3.5 通过Hibernate API操纵数据库 58 3.5.1 Hibernate的初始化 61 3.5.2 访问Hibernate的Session接口 63 3.6 运行helloapp应用 67 3.6.1 创建运行本书范例的系统环境 67 3.6.2 创建helloapp应用的目录结构 72 3.6.3 把helloapp应用作为独立应用程序运行 73 3.6.4 把helloapp应用作为Java Web应用运行 77 3.7 小结 78 3.8 思考题 80 第4章 hbm2java和hbm2ddl工具 83 本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 93 4.4 运行hbm2ddl工具 94 4.5 使用XML格式的配置文件 96 4.6 小结 97 4.7 思考题 98 第5章 对象-关系映射基础 101 本章主要介绍单个持久化类与单个数据库之间进行映射的方法,尤其是当持久化类的属性不和数据库的字段一一对应时的映射技巧。 5.1 持久化类的属性及访问方法 101 5.1.1 基本类型属性和包装类型属性 102 5.1.2 Hibernate访问持久化类属性的策略 104 5.1.3 在持久化类的访问方法加入程序逻辑 104 5.1.4 设置派生属性 107 5.1.5 控制insert和update语句 108 5.2 处理SQL引用标识符 109 5.3 创建命名策略 110 5.4 设置数据库Schema 112 5.5 设置类的包名 113 5.6 运行本章的范例程序 114 5.7 小结 120 5.8 思考题 121 第6章 映射对象标识符 123 本章主要介绍关系数据库的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 6.1.2 从序列(Sequence)获取自动增长的标识符 124 6.2 Java语言按内存地址区分不同的对象 125 6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo标识符生成器 135 6.4.5 native标识符生成器 137 6.5 映射自然主键 138 6.5.1 映射单个自然主键 138 6.5.2 映射复合自然主键 140 6.6 小结 143 6.7 思考题 144 第7章 映射一对多关联关系 147 本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 8.2.2 脏检查及清理缓存的机制 184 8.3 Java对象在Hibernate 持久化层的状态 187 8.3.1 临时对象的特征 188 8.3.2 持久化对象的特征 189 8.3.3 被删除对象的特征 190 8.3.4 游离对象的特征 191 8.4 Session接口的详细用法 191 8.4.1 Session的save()和persist()方法 191 8.4.2 Session的load()和get()方法 194 8.4.3 Session的update()方法 195 8.4.4 Session的saveOrUpdate()方法 197 8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate()方法 201 8.5 级联操纵对象图 202 8.5.1 级联保存临时对象 206 8.5.2 更新持久化对象 207 8.5.3 持久化临时对象 207 8.5.4 更新游离对象 209 8.5.5 遍历对象图 210 8.6 小结 211 8.7 思考题 211

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧