`

hibernate映射二

 
阅读更多

<!-- [if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--><!-- [if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1030"/> </xml><![endif]--><!-- [if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]-->

继承映射

Animal

Id

name

Sex

Weight

Height

Type

1

小猪

True

100

 

P

2

小鸟

False

 

20

B

Extends.hbm.xml 如下:

< hibernate-mapping package = "com.test.hibernate" >

    < class name = "Animal" table = "animal" >

       < id name = "id" >

           < generator class = "native" ></ generator >

       </ id >

        < property name = "name" ></ property >

       < property name = "sex" ></ property >

       < discriminator column = "type" type = "string" />

       < subclass name = "Pig" discriminator-value = "P" >

           < property name = "weight" ></ property >

       </ subclass >

       < subclass name = "Bird" discriminator-value = "B" >

           < property name = "height" ></ property >

       </ subclass >

    </ class >

</ hibernate-mapping >

 

Animal animal =(Animal)session.load(animal.Class, 1);

       if (animal instanceof Pig) {

           System. out .println( "Pig" );

          

       }

 

当用 Pig 去加载时是可以的,用父类 Animal 去加载也可以,但是 load 默认是 lazy 加载,用 Animal 加载的是 animal 代理类不是真正的 Pig

如果你把 class 中的 lazy=”false”, 则用 Animal 加载的是是真正的 Pig 类(多态)

get() 方法和 sql 查询支持多态查询,返回的是真正的 Pig

Sql 的“ from java.lang.Object ”是查到所有的实体类对象;

2 每个类一张映射表

animal

Id

Name

sex

1

小猪

True

2

小鸟

false

  pig

pid

weight

1

100

bird

bid

height

1

10

Extends.hbm.xml 如下:

< hibernate-mapping package = "com.test.hibernate" >

    < class name = "Animal" table = "animal" >

       < id name = "id" >

           < generator class = "native" ></ generator >

       </ id >

       < property name = "name" ></ property >

       < property name = "sex" ></ property >

       <join- subclass name = "Pig" table=”pig” >

           <key column=”pid” />

           < property name = "weight" ></ property >

       </ join- subclass >

       < join- subclass name = "Bird" table=”bird” >

           <key column=”bid” />

           < property name = "height" ></ property >

       </ join- subclass >

    </ class >

这种对象模型不变而存储模型的方法变了;缺点是建表多,效率低;

如果 User 对象的一些属性也是其他对象的属性(即他们有许多共同的属性),因此将共同的属性提取成为一个公用的类(此类包含了共同的属性)如:

public class User {

    private int id ;

    private Contact conta ct ;

 

}

//set,get 方法略

public class Contact {

private String name ;

private boolean sex ;

}

//set,get 方法略

User.hbm.xml 如下:

< hibernate-mapping package = "com.test.hibernate" >

    < class name = "User" table = "user" >

       < id name = "id" >

           < generator class = "native" ></ generator >

       </ id >

       <component name= "contact">

           < property name = "name" ></ property >

           < property name = "sex" ></ property >

       </component>

    </ class >

对关系模型没有任何影响,这样适合复用;

复合主键映射

通常将复合主键相关的属性放到一个单独的类中,这个是有约束的:

l       必须实现序列化接口

l       必须写 hashCode() equals()

public class User {

    private int age ;

    private PK composite ;// 复合主键

 

}

//set,get 方法略

public class PK {

private String name ;

private boolean sex ;

}

//set,get 方法略

User.hbm.xml 如下:

< hibernate-mapping package = "com.test.hibernate" >

    < class name = "User" table = "user" >

       <composite-id name= " composite ">

           <key- property name = "name" ></key- property >

           <key- property name = "sex" ></key- property >

</composite-id>

< property name = "name" ></ property >

           </ class >

集合的映射

t_collection_mapping

id

name

1

xxx

t_set_values

set_id

set_value

1

A

1

b

t_list_values

list_id

list_value

list_index

1

c

0

1

d

  • 大小: 7.1 KB
分享到:
评论

相关推荐

    自动生成hibernate映射文件和实体类

    "自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...

    生成hibernate映射文件工具

    hibernate映射文件是Java开发中用于对象关系映射(ORM)的重要组成部分,它将数据库表与Java类之间的关系进行定义,使得开发者无需编写大量的SQL语句,就能实现对数据库的操作。`生成hibernate映射文件工具`是为了...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    Hibernate 映射文件自动生成

    【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...

    myeclipse自动生成hibernate映射文件

    Hibernate映射文件是XML格式的文件,它定义了数据库表与Java实体类之间的对应关系,包括字段映射、主键策略、关联关系等。映射文件让开发者无需编写SQL语句,就能通过Java对象进行数据库操作。 2. **MyEclipse ...

    Myeclipse生成Hibernate映射文件

    而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    build.xml 手写自动生成Hibernate映射文件和配置文件源代码

    Hibernate映射笔记

    ### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 Hibernate映射是ORM(对象关系映射)框架中的一项关键技术,它允许开发者在数据库表和Java对象之间建立映射关系,从而简化了数据访问层的开发工作。...

    常用 Hibernate 映射配置说明.doc

    ### 常用Hibernate映射配置详解 #### 1. hibernate-mapping节点解析 `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    Hibernate映射树形结构

    标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    hibernate映射文件生成数据库

    2. 编写映射文件:对于每个实体类,编写相应的Hibernate映射文件。映射文件中,你需要指定表名、列名、数据类型以及主键生成策略等。例如: ```xml &lt;hibernate-mapping package="com.example"&gt; &lt;/...

    Hibernate映射实例

    确保数据库与Hibernate映射文件一致,能正确地反映实体之间的关系。导入DBO到SQL Server数据库后,就可以通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作了。 在开发过程中,理解并熟练运用这些...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    Hibernate映射集合属性List

    本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...

Global site tag (gtag.js) - Google Analytics