• Hibernate常见注解说明


     1 @Entity表示将一个类声明为一个实体的bean(即一个持久化的POJO类) 
     2 
     3 2.@Table表示声明该实体bean映射指定的表(table),目录(catalog)和schema的名字
     4 
     5 @Id表示声明了该实体bean的标识属性,即主键
     6 
     7 @Column表示声明了属性到列的映射。该注解有如下属性:
     8      4.1:name              可选 列名(默认值为属性名)
     9      4.2:unique             可选 是否在该列上设置唯一约束(默认为false)
    10      4.3:nullable           可选 是否为空(默认为false)
    11      4.4:insertable         可选 是否作为生成insert语句中的一个列(默认为true)
    12      4.5:updateable         可选 是否作为生成update语句中的一个列(默认为true)
    13    4.6:columnDefinition  可选 为这个特定的列覆盖sql ddl片段(可能影响移植)
    14    4.7:table                可选 定义对应的表(默认为主表)
    15    4.8:length            可选 列长度(默认值为255)
    16    4.9:precision            可选 列十进制进度,默认为0
    17    4.10:scale            可选 如果十进制数值范围可用,在此设置
    18 
    19 @GeneratedValue表示主键的生成策略。该注解有如下属性:
    20      5.1:strategy          指定生成的策略(JPA定义的),默认是GenerationType.AUTO 
    21   GenerationType.AUTO主键有程序控制
    22   GenerationType.IDENTITY主键由数据库自动生成,常用与sqlserver
    23   GenerationType.SEQUENCE根据序列生成主键,这个值要与generator一同使用
    24   generator指定主键的生成器(可能是oracle中序列)
    25   GenerationType.TABLE使用一个特定的数据库表格来保存主键
    26   
    27      5.2:@GenericGenerator 表示声明了一个hibernate的主键的生成策略。支持13种生
    28   成策略。该注解有如下属性:name(指定生成器的名称),strategy(指定生成策    略),parameters(得到strategy指定的具体生成器所用到的参数)
    29   其中13中策略(strategy属性值)如下:
    30   native 指将主键的生成工作由数据库完成,很常用.
    31   Uuid 采用128位uuid算法生成的主键,占用空间较大
    32   Hilo要在数据库中建立一张额外的表,默认表名为hibernate_unque_key,默认      字段为integer类型,名称是next_hi(比较少用) 
    33   assigned 在插入数据的时候主键由程序处理(很常用),这是<generator>元素      没有指定时的默认生成策略。等同于JPA中的AUTO。 
    34   Identity 自动增长,等同于JPA中identity
    35   select 使用触发器生成主键(主要用于早期的数据库主键生成机制,少用) 
    36   sequence 调用谨慎数据库的序列来生成主键,要设定序列名,不然hibernate      无法找到。 
    37   seqhilo 通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持      Sequence的数据库,如Orcale(比较少用) 
    38   increnment 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个     hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法
    39   foreign 使用另一个相关的对象的主键。通常和<one-to-one>联合起来使用
    40   guid 采用数据库底层的guid算法机制,对应MySQL的uuid()函数,SQL Server       的newid()函数,ORCALE的rawtohex(sys_guid())函数等 
    41   sequence-identity sequence策略的扩展,采用立即检索策略来获取sequence       值,需要JDBC3.0和JDK4以上(含1.4)版本 
    42   uuid.hex 看uudi,建议用uuid替换 
    43 
    44 看了这么多的主键生成策略,我自己也快晕了,其实常用的就是oracle主键与sqlserver的主键生成策略,它们分别表示如下:
    45 Oracle主键生成:
    46   @Id
    47     @GeneratedValue(generator = "depgen")   
    48     @GenericGenerator(name = "depgen", strategy = "assigned")
    49     private int deptno;//deptno为oracle数据库中某部门表的主键
    50 
    51 Sqlserver主键生成:
    52   @Id
    53   @GeneratedValue(strategy=GenerationType.IDENTITY)
    54   private Integer uid;//uid为sqlserver数据库中某用户表的用户id,表示主键
    55   
    56 6.@OneToMany用于设置一对多的关联,用于配置<set>端。cascade属性有5个值(只有CascadeType.All好用?),  分别是CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)、CascadeType.All(全部)
    57 
    58 targetEntity属性表示目标指向那个类
    59 
    60 mappedBy属性表示映射 即:
    61 @OneToMany(targetEntity=EmpInfo.class,cascade=CascadeType.ALL,mappedBy="dept")
    62 private Set empinfos = new HashSet(0);
    63 
    64 Fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EACER表示立即加载。
    65 
    66 @ManyToOne用于多对一的关联,用于配置如:private DeptInfo dept;端。
    67   如:
    68   @ManyToOne(targetEntity=DeptInfo.class)
    69       @JoinColumn(name="deptno")//这里的deptno为此表对应的外键名
    70       private DeptInfo dept;
    71 
    72 @Cache用于配置配置缓存
    73 
    74 以上是小编的一点小小的终结,希望对大家有所帮助!
    75 最后祝大家愉快!
  • 相关阅读:
    PhpStorm Swoole 和 CI 代码自动补全
    python正则表达式匹配多行
    ES6 Template Strings(转)
    IntelliJ隐藏特定后缀文件
    网络游戏术语(转)
    mac查看当前调用tcp的进程并关闭指定进程
    袭击Mercurial SCM(HG)
    T 泛型转换
    UiAutomator源代码分析之UiAutomatorBridge框架
    ASP.NET MVC 入门8、ModelState与数据验证
  • 原文地址:https://www.cnblogs.com/huzi007/p/2976769.html
Copyright © 2020-2023  润新知