java 25 Hibernate

Hibernate的核心接口

  • Sesssion
    负责执行被持久化对象的CRUD操作。非线程安全。
  • SessionFactory
    SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。
  • Transaction
    Transaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。
  • Query
    Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。
  • Criteria
    Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。
  • Configuration
    Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。

Hibernate主键策略

  • assigned
    主键由外部程序负责生成,在 save()之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。
    特点:可以跨数据库,人为控制主键生成,应尽量避免。
  • increment
    由Hibernate从数据库中取出主键的最大值(每个session只取1次),以该值为基础,每次增量为1,在内存中生成主键,不依赖于底层的数据库,因此可以跨数据库。
    特点:跨数据库,不适合多进程并发更新数据库,适合单一进程访问数据库,不能用于群集环境。
  • hilo
    hilo(高低位方式high low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值。保存hi
    值的表至少有一条记录(只与第一条记录有关),否则会出现错误。可以跨数据库。
    特点:跨数据库,hilo算法生成的标志只能在一个数据库中保证唯一。
  • seqhilo
    与hilo类似,通过hi/lo算法实现的主键生成机制,只是将hilo中的数据表换成了序列sequence,需要数据库中先创建sequence,适用于支持sequence的数据库,如Oracle。
    特点:与hilo类似,只能在支持序列的数据库中使用。
  • sequence
    采用数据库提供的sequence机制生成主键,需要数据库支持sequence。如oralce、DB、SAP DB、PostgerSQL、McKoi中的sequence。MySQL这种不支持sequence的数据库则不行(可以使用identity
    )。
    特点:只能在支持序列的数据库中使用,如Oracle。
  • identity
    identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL ServerMySQLSybaseHypersonicSQL
    等,Oracle这类没有自增字段的则不支持。
    特点:只能用在支持自动增长的字段数据库中使用,如MySQL。
  • native
    native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。
    特点:根据数据库自动选择,项目中如果用到多个数据库时,可以使用这种方式,使用时需要设置表的自增字段或建立序列,建立表等。
  • foreign
    使用另外一个相关联的对象的主键作为该对象主键。主要用于一对一关系中。
    特点:很少使用,大多用在一对一关系中。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库...
    兰缘小妖阅读 4,929评论 1 18
  • class 可配置项 native:根据使用的数据库帮你选择哪个值 uuid:类似C#Guid 1、assigne...
    垃圾简书_吃枣药丸阅读 3,471评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,896评论 18 399
  • 感恩母亲无私的爱,每天给我们煮可口健康的饭菜,谢谢您!我爱您*感恩弟弟给我电脑用,给我冲茶,感恩弟弟妹妹们相互陪伴...
    晴晴zhang阅读 3,093评论 0 0
  • 投射:1投射認識到可以讓我賺錢的大客! 2投射有緣份讓我感受到愛! 3投射有刷卡錢!感賞:1感賞師兄關心我! 2感...
    謝奕鋒阅读 975评论 0 0