Hibernate中关于ID配置

手把手解决GD32H759I-EVAL以太网通信三大坑:IP冲突、端口绑定失败、LWIP内存泄漏 本文针对GD32H759I-EVAL开发板在以太网通信调试中常见的三大难题——IP地址冲突、端口绑定失败和LWIP内存泄漏,提供了详细的实战排障指南。文章深入分析了问题根源,并给出了具体的网络配置、端口管理策略和内存泄漏检测方法,帮助开发者快速定位并解决嵌入式网络通信中的棘手问题,确保系统稳定运行。 阅读详情
     被映射的类必须声明对应数据库表主键字段。大多数类有一个JavaBeans风格的属性,为每一个实例包含唯一的标识。<id> 元素定义了该属性到数据库表主键字段的映射。

<id
       name="propertyName"                      
       type="typename"                          
       column="column_name"                     
       unsaved-value="any|none|null|id_value"   
       access="field|property|ClassName">       
       <generator class="generatorClass"/>
</id>
name (可选): 标识属性的名字。

type (可选): 标识Hibernate类型的名字。

column (可选 - 默认为属性名): 主键字段的名字。

unsaved-value (可选 - 默认为null): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注)但未再次持久化的实例区分开来。

access (可选 - 默认为property): Hibernate用来访问属性值的策略。

如果 name属性不存在,会认为这个类没有标识属性。

unsaved-value 属性很重要!如果你的类的标识属性不是默认为null的,你应该指定正确的默认值。

还有一个另外的<composite-id>声明可以访问旧式的多主键数据。我们强烈不鼓励使用这种方式。

1. generator
必须声明的<generator>子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数,用<param>元素来传递。

<id name="id" type="long" column="uid" unsaved-value="0">
       <generator class="net.sf.hibernate.id.TableHiLoGenerator">
               <param name="table">uid_table</param>
               <param name="column">next_hi_value_column</param>
       </generator>
</id>
所有的生成器都实现net.sf.hibernate.id.IdentifierGenerator接口。这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字:

increment(递增)
用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的。

sequence (序列)
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。

hilo (高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next)作为高位值得来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器。

seqhilo(使用序列的高低位)
使用一个高/低位算法来高效的生成long, short或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

uuid.hex
用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。

uuid.string
使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中

native(本地)
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。

assigned(程序设置)
让应用程序在save()之前为对象分配一个标示符。

foreign(外部引用)
使用另外一个相关联的对象的标识符。和<one-to-one>联合一起使用。


2. 高/低位算法(Hi/Lo Algorithm)
hilo 和 seqhilo生成器给出了两种hi/lo算法的实现,这是一种很令人满意的标识符生成算法。第一种实现需要一个“特殊”的数据库表来保存下一个可用的“hi”值。第二种实现使用一个Oracle风格的序列(在被支持的情况下)。

<id name="id" type="long" column="cat_id">
       <generator class="hilo">
               <param name="table">hi_value</param>
               <param name="column">next_value</param>
               <param name="max_lo">100</param>
       </generator>
</id>
<id name="id" type="long" column="cat_id">
       <generator class="seqhilo">
               <param name="sequence">hi_value</param>
               <param name="max_lo">100</param>
       </generator>
</id>
很不幸,你在为Hibernate自行提供Connection,或者Hibernate使用JTA获取应用服务器的数据源连接的时候无法使用hilo 。Hibernate必须能够在一个新的事务中得到一个"hi"值。在EJB环境中实现hi/lo算法的标准方法是使用一个无状态的session bean。

3. UUID算法(UUID Algorithm )
UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了。

不要试图在PostgreSQL中使用uuid.string。

4. 标识字段和序列(Identity Columns and Sequences)
对于内部支持标识字段的数据库(DB2,MySQL,Sybase,MS SQL),你可以使用identity关键字生成。对于内部支持序列的数据库(DB2,Oracle, PostgreSQL, Interbase, McKoi,SAP DB),你可以使用sequence风格的关键字生成。这两种方式对于插入一个新的对象都需要两次SQL查询。

<id name="id" type="long" column="uid">
       <generator class="sequence">
               <param name="sequence">uid_sequence</param>
       </generator>
</id>
<id name="id" type="long" column="uid" unsaved-value="0">
       <generator class="identity"/>
</id>
     对于跨平台开发,native策略会从identity, sequence 和hilo中进行选择,取决于底层数据库的支持能力。

下面再给个简单例子:

<id name="id" type="long" column="uid">
   <generator class="sequence">
       <param name="sequence">uid_sequence</param>
   </genarator>
</id>

注意:

<generator class=""> 里面可以选啊!推荐Oracle用sequence,seqhilo
体素坐标(voxel_coors)在mmdetection3d中的理解 阅读详情

相关推荐

[ATF]-smc指令详解

1、在ree/tee调用smc之前 2、调用smc之后,cpu触发同步异常,进入ATF的sync_exception_aarch64—>handle_sync_exception—>smc_handler64处理函数 在smc_handler64中又调用了smc_handler func smc_handler64 /* ---------------------------------------------- * Detect if this is a RUN_IMAGE or ot

baron-周贺贺-代码改变世界ctw 1万+

hibernateid标签设置

id标签 被映射的类必须声明对应数据库表主键字段。大多数类有一个JavaBeans风格的属性,为每一个实例包含唯一的标识。 元素定义了该属性到数据库表主键字段的映射。 name (可选): 标识属性的名字。 type (可选): 标识Hibernate类型的名字。 column (可选 - 默认为属性名): 主键字...

Welcome to here ! 477

CAPL与人工智能结合

AI模型是指通过机器学习算法训练得到的模型,可以用于分类、回归、聚类等任务。常见的AI模型包括神经网络、支持向量机、决策树等。在汽车电子系统中,AI模型可以用于故障诊断、驾驶行为分析、自动驾驶等场景。实时决策是指在汽车电子系统中,根据AI模型的预测结果,实时做出决策。实时决策可以用于自动驾驶、故障诊断等场景。通过本文的学习,读者应该对CAPL与人工智能结合有了初步的了解,并能够编写复杂的CAPL脚本。

闲人编程的博客 1439

hibernate生成主键id配置

hibernate生成主键id配置 1、identity:用于MySql数据库。特点:递增        注:对于MySql数据       库使用递增序列时需要在建表时对主键指定为auto_increment属性。  2、sequence:用于Oracle数据库           序列      名    3、native:跨数据库时使用,由底层方言产生。 Default

zhuo889的专栏 654

Hibernate/JPA 中的id概述

这意味着这些值是唯一的,因此它们可以标识特定实体,它们不为 null,也不会被修改。此处,使用 “prod” 前缀生成的第一个值是 “prod-1”,后跟 “prod-2”。如果我们使用默认生成类型,持久性提供程序将根据主键属性的类型确定值。如果我们的数据库支持序列,则此生成器使用序列。在此示例中,我们还为序列设置了一个初始值,这意味着主键生成将从 4 开始。在本文中,我们已经了解了在 Hibernate 中定义标识符的多种方法。如果我们不指定序列名称,Hibernate将对不同的类型重用相同的。

allway2的博客 1059

针对hibernate应用的表设计,最好设计一个非逻辑主键id吗?大家怎么做的

hibernate的应用,一定需要主键的。   很多书上或网页都推荐针对hibernate的表设计时,设计一个独立的主键id,跟业务逻辑无关系的。但是我在实际应用中,发现有些业务涉及主外时,使用跟业务逻辑有关的主键很方便。 问题补充:谢谢各位,这几天忙去了。  确实主键和业务脱离,能增加灵活性。  现在,我总结下,看对不对  用独立主键:  优点:  1. 能和

q1054261752的博客 1176

Hibernate配置及三种Id生成策略

hibernate配置以及常用的Id生成策略

August 936

hibernate id 映射配置

hibernate id 映射配置

binziwell的专栏 505

hibernate oracle id 配置策略

 &lt;id name="id" column="event_id"&gt;      &lt;generator class="sequence"&gt;&lt;/generator&gt;   &lt;/id&gt;   如果在每张表只是配置generator为sequence则这些表会共用一个sequence,这个sequence是hibernate会自己创建到oracle

lpm528的博客 171

hibernate ID生成策略配置

1.Student.hbm.xml配置 &lt;hibernate-mapping package="com.wxh.hibernate.model"&gt; &lt;class name="Student" &gt; &lt;id name="id"&gt; &lt;generator class="uuid"&gt;&lt;/ge

weixin_34191734的博客 142

hibernate generator oracle,Hibernate用oracle sequence生成ID配置

TMP_EMP中的ID是根据序列SQ_TMP_EMP来生成的,需要在TmpEmp.hbm.xml中设置:SQ_TMP_EMP这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中示例代码:先创建一个工具类packageapp;importorg.hibernate.Session;importorg.hibernate.SessionFactory...

weixin_36393674的博客 232

Hibernate 中的主健 ID 映射配置问题

Hibernate 中的主健 ID 映射配置,语法如下: [html] view plaincopy id  name = "Entity_PropertyName"        column = "DB_ColumnName"        type = "Hibernate_dataType"        unsaved-val

u012047933的专栏 2382

hibernate框架】uuid与native生成ID的样例-XML配置

native算法生成随机id: native 根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。 native算法指定的字段类型: 用mysql,你需要设置主键bigint, autoincreament (大数,自增) 用oracle,你需要设置主键bigint, sequence  这样才能在hibernate中指定native

程序猿之洞 5578

hibernate mysql id 自增长 注解_hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询...

不同数据库 自增长ID配置正对不同的数据库可以同时使用@Id@GeneratedValue(strategy = GenerationType.AUTO)2 针对mysql@Id@GeneratedValue(strategy = GenerationType.IDENTITY)3 针对oracle@Id@GeneratedValue(strategy = GenerationType.SEQUE...

weixin_34138192的博客 374

hibernate自己手动设置id配置

做项目的时候,一般配置为自增长或uuid,但是今天要自己手动设置id。在User.hbm.xml中配置:                就可以自己手动设置id了。

你究竟是想一辈子卖糖水,还是希望获得改变世界的机会? 4597

mysql hibernate id generator_Hibernate映射文件idgenerator配置方法

可选的子元素是 一个Java类的名称,用来生成该持久化类实例的唯一标识符。如果这个生成器实例需要某些配置值或者初始化参数,可以使用元素来传递这些参数。所有的生成器都实现了org.hibernate.id.IdentifierGenerator接口。这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是一些内置生成器的快捷名字:inc...

weixin_35414475的博客 259

ID的po,在hibernate里怎么配置?

如题 我是如下配置的: 但是总是报错:Unknown entity: tv.dogo.po.VideoLabel any ideas?谢谢...

禁区上帝 305

最新广东省地质灾害点SHP矢量数据下载

最新广东省上万个地质灾害点的空间分布信息,涵盖崩塌、塌陷、泥石流、地面沉降、地裂缝、滑坡及斜坡等七种主要灾害类型,属性表包含关键字段:灾害体类型、灾害体编号、灾害体名称、所属省市县、地理位置、经纬度信息、威胁人口、威胁财产、灾害等级险情等级、毁坏房屋等。

格式工厂 破解版

格式工厂 破解版 去广告 超级好用有需要的可来下载试试

上一篇: Struts2.0新标签的用法
下一篇: Mysql连接字符串大全
coolhty
博客等级 码龄19年 44粉丝 85原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值