【Hibernate】—映射

【前言】 

   hibernate一个重要的功能就是映射,它能够在对象模型和关系模型之间转换,是面向对象编程思想提倡使用的,使用映射程序开发人员只需要关心对象模型中代码的编写。对象和关系数据库之间的映射通常是由XML文档来定义的。这个映射文档被设计为易读的,并且可以手动修改。

【映射总图】


【映射文件基本结构】

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.bjpowernode.hibernate.User">
        <id name="id">
            ………
        </id>
        <property name="name"/>
        …..
   </class>
</hibernate-mapping>

【解释】

1、hibernate-mapping元素:可以包含的子元素   

   (1)class – 描述被映射的类
   (2)subclass/joined-subclass – 在继承关系的映射中会用到
   (3)query – 将查询语句定义在配置文件中

2、class元素

(1)常用属性

       name – 实体类的类名
       table – 被映射到数据库表的名称

(2)可以包含的常见子元素

        id – 主键定义
        property – 属性定义
        关系映射定义(一对多、多对一等)

3、主键 - id

(1)被映射的类必须要有一个id定义

(2)通常使用逻辑主键

        逻辑主键:没有意义的唯一标识符

        业务主键:有意义的唯一标识符

(3)Hibernate使用generator类来生成主键

  • Hibernate自带了很多generator(不同的主键生成策略)

             int/long– native

            String - uuid

  • 我们也可以定义自己的generator

           实现IdentifierGenerator接口

          一般情况下不需要实现自己的generator

4、普通属性映射 - property   <property name=“property_name”/>

(1)可使用的常见属性如下:

     name – 对应类的属性名称

     type – 指定属性的类型,一般情况下可以不用指定,由hibernate自动匹配(可参考文档中的有关说明)

     length – 指定长度

     column – 指定属性所对应的数据库字段的名称,如果不指定,就是属性的名称

【基本类映射】

1.实体类---——表,采用<class>标签映射

2.实体类中的普通属性(不包括集合、自定义类和数组)---表字段,采用<property>标签映射

3.注意:

  如果实体类的名称或实体类中属性的名称和数据库关键字重复,将会出现问题可以考虑采用table属性和column属性对其进行重新命名

4.实体类的设计原则:

* 实现无参的默认的构造函数
* 提供一个标识
* 建议不要使用final修饰实体类
* 建议为实体类生成getter和setter方法

5.User1.hbm.xml文件

<hibernate-mapping package="com.bjpowernode.hibernate">
	<class name="User1" table="t_user1">
		<id name="id" column="user_id" length="32" access="field">
			<generator class="uuid"/>
		</id>
		<property name="name" length="30" unique="true" not-null="true"/>
		<property name="password"/>
		<property name="createTime" type="date" column="create_time"/>
		<property name="expireTime" type="date" />
	</class>
</hibernate-mapping>

6.生成表



【总结】

  上文介绍了Hibernate的基本映射,并讨论了映射中经常用到的几个属性,使用上面的属性能实现对数据库最基本的操作,但在关系模型中还有很多叫复杂的关系没有讨论,如:多对一、一对多等,将会在下篇文章讨论对象关系映射。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值