Hibernate的基本标签和映射

hibernate基本映射标签和属性
1.<hibernate-mapping>标签

<hibernate-mapping
         schema="schemaName"                          (1)
         catalog="catalogName"                        (2)
         default-cascade="cascade_style"              (3)
         default-access="field|property|ClassName"    (4)
         default-lazy="true|false"                    (5)
         auto-import="true|false"                     (6)
         package="package.name"                       (7)
 />

(1)    schema (可选): 数据库schema的名称。
(2)    catalog (可选): 数据库catalog的名称。
(3)    default-cascade (可选 - 默认为 none): 默认的级联风格。
(4)    default-access (可选 - 默认为 property): Hibernate用来访问所有属性的策略。可以通过实现PropertyAccessor接口 自定义。
(5)    default-lazy (可选 - 默认为 true): 指定了未明确注明lazy属性的Java属性和集合类, Hibernate会采取什么样的默认加载风格。
(6)    auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。
(7)    package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。 假若有两个持久化类,它们的非全限定名是一样的(就是两个类的名字一样,所在的包不一样),应该设置auto-import="false".如果把一个“import”的名字对应两个类,Hibernate会拋出一个异常hibernate-mapping元素允许嵌套多个<class>映射,但最好的做法是一个持久化类对应一个映射文件,并以持久化的超类名称命名。如:Xxx.hbm.xml

2.<class>标签
<class
        name="ClassName"                              (1)
        table="tableName"                             (2)
        dynamic-update="true|false"                   (3)
        dynamic-insert="true|false"                   (4)
        optimistic-lock="none|version|dirty|all"      (5)
        lazy="true|false"                             (6)
/>
(1)name(可选):持久化类(或者接口)的Java全限定名。如果这个属性不存在,Hibernate将假定这是一个非POJO的实体映射
(2)table(可选-默认是类的非全限定名):对应数据库表名,生成DDL时数据表名,如果省略,则名称同持久化类名称
(3)dynamic-update(可选,默认为false):指定用于UPDATE的SQL将会在运行时动态生成,只更新那些被改过的字段
(4)dynamic-insert(可选,默认为false):指定用于insert的sql将会在运行时动态生成,并且只包含那些非空字段
(5) optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。
  (6) lazy (可选): 通过设置lazy="false", 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。 



3.<id>标签
<id>标签必须配置在<class>标签的第一个位置。由一个字段构成主键,<id>元素定义了该属性到数据库表主键字段的映射
<id name="propertyName"         (1)
    type="typename"             (2)
    column="column_name">        (3)
    length="length">             (4)
     <generator class="generatorClass" />
</id>

(1)name:实体类的属性名字
(2)type:标识Hibernate类型的名字(省略则使用Hibernate默认类型),也可以自己配置类型(integer,long,short,float,double,character,byte,boolean,yes_no,true_false)
(3)column(可选-默认为属性名):主键字段的名字(省略则取name为字段名)
(4)length(可选):当type为varchar时,设置字段长度

<generator>元素(主键生成策略)
主键生成策略必须配置,用来为该持久化类的实例生成唯一的标识。
uuid:
用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了IP地址),UUID被编码为一个32位16进制数字的字符串,它的生成是由Hibernate生成,一般不会重复UUID包含:IP地址,JVM的启动时间,系统时间和一个计算器值。
native:
根据底层数据库的能力选择identity,sequence或者hilo中的一个(数据库自增)
assigned
让程序在save()之前为对象分配一个表示符。这是<generator>元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)


5.<property>标签
用于映射普通属性到表字段
<property
     name="propertyName"
     column="column_name"
     type="typename"
     length=""
     unique=""
     not-null=""
 >
</property>

注:如果实体类和实体类中的属性和SQL中的关键字重复,必须采用table或column重新命名

6.Hibernate完整映射实例:

<?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属性:实体类的完整路径
		* table属性:实体类映射到数据库中的表名,如果省略,则为实体类的类名称 
	-->
	<class name="com.wjt276.hibernate.User1">
		<!-- 映射数据库主键 映射到数据表中的字段名默认为类属性名,但可以利用column重新指定-->
		<id name="id" column="id">
			<!-- generator设置主键生成策略 	uuid:一万年内生成唯一的字符串 -->
			<generator class="uuid"/>
		</id>
		<!-- 
			property 映射普通属性  映射到数据表中的字段名默认为类属性名,但可以利用column重新指定
			unique:唯一约束;
			not-null:非空约束
			length:字段长度
		-->
		<property name="name" unique="true" not-null="true" length="20"/>
		<property name="password" not-null="true" length="10"/>
		<property name="createTime"/><!--Hibernate会自动根据实体类属性类型生成数据库表中字段类型 -->
		<property name="expireTime"/>
	</class>
</hibernate-mapping>






































































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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值