Hibernate 的两种配置
前言:不管是注解配置还是xml,都是告诉hibernate你想创建什么样的数据表,几张数据表中的关系是什么,仅此而已,剩下的不过就是hibernate的优化了。
所以从创建数据表的ddl语句和数据表的结构出发就可以很轻松地知道,hibernate需要哪些信息了。
一、xml配置
表名的配置: 用<class>标签。 属性说明:name------其值是一个Java类表示生成该Java类对应的数据表。 table-----其值表示该Java类对应的数据表的表名 lazy------值为true或false, 表示是否开启懒加载模式 说明: 关于表的字段的,约束,键值等配置的标签都是<class>标签的子节点 主键: 用<id>标签 属性:name------Java类中对应主键的属性名 column----表示该字段在数据表中的名称。 子标签: <generator> 用于指明序列生成的方式 普通字段: 用<property>标签 说明,一般就用name和column两个属性,没有声明column时,其值就是name的值。 关系标签: <many-to-one> 说明: 在一对多的关系中用在多方。 属性: name-------值为该类所持有的外键引用 column-----外键名字段 cascade----设置关系的维护方式 <set> 在多对一的情况下,到一方的Java类中含有多方的集合SET通道时 属性:name----该属性指向的是该集合属性的名称。 子标签: <key column="" /><!-- column属性是配置多方外键名 --> <one-to-many class="" /><!--class属性值表示many方对应的Java类(注意多方含有外键)--> 注意:在默认的情况下凡是同过关系通道要想将关系的被维护方的瞬时态对象持久化----------别做梦了,除非用cascade="all"开启权限。 关于权限的设置一般在关系的维护方。
二、注解配置
注解: 注解持久化对象:@Entity 注解表名 @Table 注解主键 @Id 注解序列生成器 @SequenceGenerator(name="",sequenceName="") @GeneratedValue(generator="") 注解字段名: @Column() 关系注解: 一对多:@OneToMany 说明:1. 该注解配置在一对多关系中的一方的集合属性上 2. 因为一方并不是外键的持有者 @ManyToOne 说明: 1. 因为多方是外键的持有者,所以对外键属性要声明:@JoinColumn(name="cid")来引入外键列 多对多:@ManyToMany() parameter 说明:mappedBy="field which used to relate the foreign key is belong to inverseObject", 声明了该参数的Entity不能声明@JoinTable 描述: 声明了@ManyToMany()注解之后还应该声明哪些注解 维护关系通道的参数 注解通过字段声明中间表的方式:@JoinTable(name="table_name",joinColumns={@JoinColumn(name="stu_id")},inverseJoinColumns={@JoinColumn(name="cid")}) 说明: 该注解主要是用来维护外键关系的 joinColumns 用来声明当前与对象所维护的外键 inverseJoinColumns to statement the foreign key which is related to inverse object questions: 1.声明了关系型注解----对应方式,根据对应方式需要告诉hibernate哪些信息? 2.关系维护方和被维护方的权限 3.ORM模型的工作原理 4.hibernate 中的多对多,一对一,一对多等关系,其实质就是数据库中的各种关联关系,关键是如何将数据库模型转化为域模型----在转化过程中的关键点是----哪一方持有哪一方的引用
待续..........
Hibernate 的两种配置的更多相关文章
- Hibernate实现有两种配置,xml配置与注释配置
hibernate实现有两种配置,xml配置与注释配置. (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) < ...
- hibernate 一对一 one to one的两种配置方式
hibernate中one-to-one两种配置方式 标签: hibernateHibernateone-to-one 2013-02-19 17:44 11445人阅读 评论(1) 收藏 举报 分 ...
- hibernate实现有两种配置,xml配置与注释配置。<转>
<注意:在配置时hibernate的下载的版本一定确保正确,因为不同版本导入的jar包可能不一样,所以会导致出现一些错误> hibernate实现有两种配置,xml配置与注释配置. (1) ...
- Hibernate中双向多对多的两种配置方式
Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java ...
- 浅谈Spring的两种配置容器
浅谈Spring的两种配置容器 原文:https://www.jb51.net/article/126295.htm 更新时间:2017年10月20日 08:44:41 作者:黄小鱼ZZZ ...
- flask框架--设置配置文件的几种方式 与Flask两种配置路由的方式
设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...
- Hibernate中两种获取Session的方式
转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...
- Spring整合Hibernate的两种方式
在使用spring注解整合hibernate时出现"org.hibernate.MappingException: Unknown entity: com.ssh.entry.Product ...
- spring 中 hibernate 的 2种 配置方式(新旧 2种方式)
Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置 Spring对hibernate配置文件hibernate.cfg.x ...
随机推荐
- C# Bitmap 复制
以后再详述,先上代码. public bool CopyBitmap(Bitmap source, Bitmap destination) { if ((source.Width != destina ...
- liunx下,只获取主机的IP?
命令: ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}'
- ittun配置和使用教程
有好久没写博了.时间过得真快,一下子一年又过去了. 不墨迹这么多了. 作为一个前端,页面写好了少不了做测试以及给其他同事看看效果,然而公司没有测试服务器,真是悲催哦. 一直都是用ip地址看页面的.但是 ...
- c# 中int.ToString()的格式化的示例
格式化数值:有时,我们可能需要将数值以一定的格式来呈现,就需要对数值进行格式化.我们使用格式字符串指定格式.格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符, ...
- Bootstrap学习笔记(一)
一.什么是Bootstrap bootstrap是一款css框架,便于响应式设计. 二.怎样使用bootstarp 最常用的方法,在html结构中引入样式表bootstarp.min.css,以及jq ...
- C#自动生成漂亮的水晶效果头像
C#自动生成漂亮的水晶效果头像 与其他的微博系统相同,在“多可内网微博系统”的用户也可上传自己的头像,并支持头像裁剪. 但“多可内网微博系统”的头像可以更漂亮,因为系统实现了水晶效果的头像.C#程序实 ...
- dll学习
Dll:动态链接库 动态链接库(dll)是包含共享函数库的二进制文件,可以被多个应用程序同时使用.建立应用程序的可执行文件时,不必将DLL连接到应用程序中,而是在运行时动态装载DLL,装载时DLL被映 ...
- Access restriction: The type TaskTopicResolver is not accessible due to restrict
Access restriction: The type TaskTopicResolver is not accessible due to restrict : Eclipse 默认把这些受访问 ...
- ios系统crash文件分析
分析crash文件必备条件:crash文件的uuid,app的uuid,dsym文件的uuid必须一致 1> crash文件的uuid为Binary Images:0x4000 - 0x1173 ...
- inside the C++ Object model总结
一. 关于对象 1.内联函数:能够除去函数调用的开支,每一处内联函数的调用都是代码的复制.这是一种空间换取时间的做法,若函数代码量大或者有循环的情况下,不宜内联(这件事有些编译器会自动帮你做).在类中 ...