基于注解的关联关系Hibernate(1)——引入知识

- 应了解的相关知识

  • 1.单/双向关联关系

首先我们要知道hibernate中单向关联关系和双向关联这个双向、单向是面向对象的说法,了解了单向关联关系和双向关联关系的区别,可以方便之后理解基于注解的Hibernate关联关系配置。

从更新角度看:双向就是这两个表无论哪一个更新另外一个表都更新,而单向就是只有主(主控)表更新从(被控)表才更新,从表更新主表不会去管。

从访问角度看:单向关联是在A类中,可以访问到B类数据,由此访问B表的数据,但在B类中却无法访问A类数据,即访问不到A表数据。
双向是在B类里也可以访问A的数据。

使用选择:看需求,如:班级表和学生表,对应的java类是班级类和学生类,若在显示学生信息的时候需要同时显示其所属的班级信息,那么就可以建立学生类到班级类的单向关联,如果要在显示班级基本信息的同时显示其所对应的学生信息,那么这时就可以建立双向关联了。

  • 2.要了解的一些Hibernate基本注解

使用注解的目的:为了简化繁琐的ORM映射文件(*.hbm)的配置。

  • 2.1.类级别注解

@entity
@entity注解是hibernate框架中的类级别注解之一,@entity注解常常用于放在实体类类头前。该注解还可以搭配应用的属性有:name - 表示该表主键生成策略名称,它被引用在@GeneratedValue中设置的“gernerator”值中。

@Table
@Table与@entity配合使用。只能标注在实体的class处,表示实体对应的数据库表名。@Table中的可选属性schema与catalog可以用来解决命名冲突问题。不同数据库对schema、catalog的支持不同

@Embeddable表示一个非Entity类可以嵌入到另一个Entity类中作为属性而存在。
@Embeddable不生成独立的表,可以理解@Embeddable注解类为属性集。
这里写图片描述
这里写图片描述

  • 2.2属性级别注解

@Id
@Id 映射生成主键(一个实体只能有一个属性被映射为主键,一般放在该主键的get()方法前面)
a.对于复合主键,实体类必须实现serializable接口(声明式接口,不需要实现任何方法)
b.将 String类型 的属性设置成主键是一定要指定该属性的长度,可以用 Column length 注解来指定,不然 MySQL 会默认让其长度为255,而 MySQL 主键的长度不允许太长。

@GeneratorValue指定主键的生成策略.
如果一个主键没有添加@GeneratorValue注解,则就是一个普通的主键,无生成策略.
当主键是int类型时,此时可以使用自动增长类型(非int不行),该注解默认就是auto类型,根据底层数据库自动选择策略.
如果想要主键采用手工赋值的方式,要使用@GeneratedValue注解的generator属性指定主键生成器的名称,并且使用@GenericGenerator注解定义主键生成器.
例子:

@Id
@GeneratedValue(generator="text")
@GenericGenerator(name="text",strategy="assigned")
private String sid;

@GeneratedValue的generator属性要与@GenericGenerator的name属性保持一致.表示@GeneratedValue所指定的主键生成器为@GenericGenerator定义的主键生成器.

@Column
@Column映射表的列(存在多表关联时,该注解可映射对应的关联关系,即外键)@Column描述了数据库表中该字段的详细定义。
一些特别的属性:
insertable:可选,表示在ORM框架执行插入操作时,该字段是否应出现在INSERT语句中,默认为true;
updateable:可选,表示在ORM框架执行更新操作时,该字段是否应出现在UPDATE语句中,默认为true,对于一经创建就不能修改的字段,该属性非常有用,如对于birthday字段。

@Transient 定义暂态属性
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值