Hibernate自动生成工具-Schema
创始人
2024-06-08 01:10:34
0

本文我们主要介绍Hibernate Schema自动生成(Automatic schema generation)技术,希望对大家的学习带来帮助。

Hibernate Schema自动生成可以从你的映射文件使用一个Hibernate工具生成DDL。 生成的schema包含有对实体和集合类表的完整性引用约束(主键和外键)。涉及到的标示符生成器所需的表和sequence也会同时生成。

在使用这个工具的时候,你必须 通过hibernate.dialet属性指定一个SQL方言(Dialet),因为DDL是与供应商高度相关的。

首先,要定制你的映射文件,来改善生成的Hibernate schema。对Hibernate schema定制化(Customizing the schema)

很多Hibernate映射元素定义了可选的length、precision 或者 scale属性。你可以通过这个属性设置字段的长度、精度、小数点位数。

  1.  
  2.  

有些tag还接受not-null属性(用来在表字段上生成NOT NULL约束)和unique属性(用来在表字段上生成UNIQUE约束)。

  1.  name="bar" column="barId" not-null="true"/> 
  2.  column="serialNumber" type="long" not-null="true" unique="true"/> 

unique-key属性可以对成组的字段指定一个***键约束(unique key constraint)。目前,unique-key属性指定的值在生成DDL时并不会被当作这个约束的名字,它们只是在用来在映射文件内部用作区分的。

  1.  name="org" column="orgId" unique-key="OrgEmployeeId"/> 
  2.  name="employeeId" unique-key="OrgEmployee"/> 

index属性会用对应的字段(一个或多个)生成一个index,它指出了这个index的名字。如果多个字段对应的index名字相同,就会生成包含这些字段的index。

  1.  name="lastName" index="CustName"/> 
  2.  name="firstName" index="CustName"/> 

foreign-key属性可以用来覆盖任何生成的外键约束的名字。

  1.  name="bar" column="barId" foreign-key="FKFooBar"/> 

很多映射元素还接受子元素。这在定义跨越多字段的类型时特别有用。

  1.  name="name" type="my.customtypes.Name"/> 
  2.      name="last" not-null="true" index="bar_idx" length="30"/> 
  3.      name="first" not-null="true" index="bar_idx" length="20"/> 
  4.      name="initial"/> 
  5. property> 

default属性为字段指定一个默认值 (在保存被映射的类的新实例之前,你应该将同样的值赋于对应的属性)。

  1.  name="credits" type="integer" insert="false"> 
  2.      name="credits" default="10"/> 
  3. property> 
  4.  name="version" type="integer" insert="false"> 
  5.      name="version" default="0"/> 
  6. property> 

sql-type属性允许用户覆盖默认的Hibernate类型到SQL数据类型的映射。

  1.  name="balance" type="float"> 
  2.      name="balance" sql-type="decimal(13,3)"/> 
  3. property> 

check属性允许用户指定一个约束检查。

  1.  name="foo" type="integer">   
  2.      name="foo" check="foo > 10"/>   
  3. property>   
  4.  name="Foo" table="foos" check="bar < 100.0">   
  5.     ...    
  6.      name="bar" type="float"/>   
  7. class>  

【编辑推荐】

  1. 分析Hibernate插入操作
  2. 剖析Hibernate批量更新
  3. 全面讲解Hibernate二级缓存
  4. 讲述Hibernate核心接口
  5. 概括Hibernate批量处理

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...