浅谈定制Hibernate映射
创始人
2024-06-08 04:51:13
0

在向大家详细介绍定制Hibernate映射之前,首先让大家了解下Hibernate自动生成主键,然后全面介绍定制Hibernate映射。

Hibernate 能够出色地自动生成主键。Hibernate/EBJ 3 注释也可以为主键的自动生成提供丰富的支持,允许实现各种策略。下面的示例说明了一种常用的方法,其中Hibernate将会根据底层数据库来确定一种恰当的键生成策略:

  1. public Long getId() {  
  2. return id;  
  3. }  

定制Hibernate映射

默认情况下,Hibernate会将持久类以匹配的名称映射到表和字段中。例如,前一个类可以与映射到以如下代码创建的表中:

  1. CREATE TABLE MODELPLANE   
  2. (  
  3. ID long,  
  4. NAME varchar  

如果您是自己生成并维护数据库,那么这种方法很有效,通过省略代码可以大大简化代码维护。然而,这并不能满足所有人的需求。有些应用程序需要访问外部数据库,而另一些可能需要遵从公司的数据库命名惯例。如果有必要,您可以使用 @Table 和 @Column 注释来定制您自己的持久性映射,如下所示:

  1. public class ModelPlane {  
  2. private Long id;  
  3. private String name;  
  4. @Id  
  5. @Column(name="PLANE_ID")  
  6. public Long getId() {  
  7. return id;  
  8. }  
  9. public void setId(Long id) {  
  10. this.id = id;  
  11. }  
  12. @Column(name="PLANE_NAME")   
  13. public String getName() {  
  14. return name;  
  15. }  
  16. public void setName(String name) {  
  17. this.name = name;  
  18. }  
  19. }  

该内容将映射到下表中:

  1. CREATE TABLE T_MODEL_PLANE   
  2. (  
  3. PLANE_ID long,  
  4. PLANE_NAME varchar  
  5. )  

也可以使用其他图和列的属性来定制Hibernate映射。这使您可以指定诸如列长度、非空约束等详细内容。Hibernate支持大量针对这些注释的属性。下例中就包含了几种属性:

  1. ...  
  2. @Column(name="PLANE_ID"length=80nullable=true)  
  3. public String getName() {  
  4. return name;  
  5. }  
  6. ...  

【编辑推荐】

  1. 获取Hibernate关联关系的方法
  2. 详细讲述Hibernate绑定JNDI
  3. Hibernate Customer客户对象
  4. 讲述Hibernate Session缓存
  5. 简单分析Hibernate读取Clob

相关内容

热门资讯

如何允许远程连接到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...