zoukankan      html  css  js  c++  java
  • Hibernate实体类编写规则和主键策略

    一、实体类的编写规则

      1、属性要是私有的。

        

      2、要有公开的setter和getter方法供外界访问和修改。

        

      3、每一个实体类要有一个属性作为唯一值(一般都是使用对于数据表的主键)。

        

      4、建议数据类型不要使用基本的数据类型,而是使用相应的包装类。

        

      5、Java中对应的包装类

    基本数据类型 对应包装类
    int Integer
    char Character
    boolean Boolean
    float Float
    double Double
    short Short
    long Long
    byte Byte

        使用包装类的原因:因为有时候使用基本数据类型无法准确表示一些场景。

                 例:score代表学生的成绩,但是在考试时可能存在缺考的情况,如果使用int数据类型,则score = 0表示考了分,但是缺考还是score =

                   0,这样无法区分;如果使用Integer,则要是缺考,score = null;这样就可以区分是考了0分还是缺考。

    二、主键生成策略

        1、Hibernate要求在一个实体中必须要有一个属性作为唯一值,这个唯一值一般都对应表中的主键。

        2、主键分类

          自然主键:把具有业务含义的字段作为主键,称之为自然主键。

          代理主键:把不具有业务含义的字段作为主键,称之为代理主键。

        3、主键的常见生成策略有七种

          (1)increment :用于long、short或int类型的,由Hibernate自动由递增的方式生成唯一标识符,每次增长1.

                   只有当没有其他线程向同一张表中插入数据时使用。不能在集群情况下使用,适用于代理主键。

          (2)identity:采用底层数据库提供的本身提供的主键生成标识符,前提是数据库必须支持自增长的数据类型。

                  在DB2、mysql、MS SQL SERVER、Sybase和HypersonicSQL数据库中可以使用该策略,该策略

                  要求在数据库中把主键定义为自增长,适用于代理主键。

          (3)sequence:Hibernate根据底层数据库序列生成标识符。条件是数据库要支持序列,Oracle数据库可以使用该策略

                   适用于代理主键。

          (4)hilo:hilo:通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。

          (5)native:根据底层数据库对自动生成表示符的能力来自动选择identity、sequence和hilo三种生成器中的一种。

                  适合跨数据库平台开发,适用于代理主键。

          (6)uuid:Hibernate采用128位的UUID来生成字符,使用16进制表示,使用该策略时主键必须定义为String类型,

                 由于其所占的空间较多,使用较少,适用于代理主键。

          (7)assigned:由Java程序负责生成标识符,如果在配置文件中不配置<generator></generator>标签,则默认为

                  该策略,适用于自然主键。

  • 相关阅读:
    ChinaCock界面控件介绍-CCLoadingIndicator
    delphi-search-path-vs-library-path-vs-browsing-path
    10.3制作Android Splash启动界面
    FMX取得屏分辨率
    REST easy with kbmMW #20 – OpenAPI and Swagger UI
    升级ChinaCock 10.3遇到的问题
    FastJson中的ObjectMapper对象的使用详解
    fastjson的值过滤器ValueFilter
    springboot 2.0 配置 spring.jackson.date-format 不生效
    War 包部署
  • 原文地址:https://www.cnblogs.com/jack1995/p/6937235.html
Copyright © 2011-2022 走看看