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 ...
随机推荐
- 【译】Android 6.0 Changes (机翻加轻微人工校对)
Android 6.0 Changes In this document Runtime Permissions Doze and App Standby Apache HTTP Client Rem ...
- mysql数据类型和列属性
列属性: 定义一个字段时对该字段设置的额外的信息或约束 1. 关联操作:reference 2. 字段默认值:default value 3. 主索引和唯一索引:primary key 和uni ...
- 【CSS3 入门教程系列】CSS3 Media Queries 实现响应式设计
在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...
- C/C++中的NULL讨论和总结
代码如下 #include <stdio.h> int main(){ int *p; p = NULL; printf("p=0x%x\n",p); typedef ...
- VisualSVN-5.1.4补丁原创发布
VisualSVN-5.1.4补丁原创发布 VisualSVN-5.1.4Patch.rar VisualSVN-5.1.4官方安装包.rar
- 怎么把jdk和jRE的Javadoc文档整合到MyEclipse
有时在写代码时,需要查看javadoc文档,便于编写程序.故如何把Javadoc文档整合到MyEclipse,以便于查看呢? 解决办法: 1.在MyEclipse中菜单栏的“Windows”---&g ...
- iptables基本规则配置(二)
注释:文章中fg:为示例 红色标记的为命令 在上篇博文中详细讲解了iptables的原理及一些常用命令,这里在简要的说明一下: Linux防火墙包含了2个部分,分别是存在于内核空间的(netfilt ...
- win7 安装JDK7和JDK8后,卸载JDK8后出错
这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑. 本人win7 x64旗舰版,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java - ...
- Python开发入门与实战19-Windows Azure web 应用部署
19. 微软云web应用部署 上一章节我们介绍了如何实现在微软云通过虚拟机部署我们的在python django应用,本章我们来介绍如何Windows Azure上部署通过部署网站的方式来部署我们的应 ...
- 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...