Hibernate学习(3)------ Hibernate的映射文件
2016-09-22 11:31
232 查看
<hibernate-mapping> <class name="com.d_hdb_property.User" table="user"> <id name="id" type="int" column="id"> <generator class="native"/> </id> <property name="name" type="string" column="name"/> <property name="gender" type="boolean" column="gender"/> <property name="birthday" type="date" column="birthday"/> <property name="desc" type="text" length="5000" column="desc_"/> <property name="photo" type="binary" column="photo" length="512000"/> </class> </hibernate-mapping>
User类如下:
package com.d_hdb_property; import java.util.Date; public class User { private Integer id; private String name; //姓名 private boolean gender; //性别,true表示男性,false表示女性 private Date birthday; //生日 private String desc; //一大段文字说明,大概5000字 private byte[] photo; //照片。二进制文件存储 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean getGender() { return gender; } public void setGender(boolean gender) { this.gender = gender; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public byte[] getPhoto() { return photo; } public void setPhoto(byte[] photo) { this.photo = photo; } }
1、class标签的参数:
name是对应的类名, table 写的是表名,这里是类和表的对应
2、各属性(property)内参数含义:
(1)name : 对象中的属性名,必须要有
(2)type : 数据的类型
可填写Hibernate 类型,也可填写Java类型,也可以不写,不写的时候自动检测
Hibernate 和Java类型对比如下:
(3)column : 对应数据中的列名,但不可与数据库在中的关键字相同,例如“desc” 需要改成“desc_”,若不写,默认为name 的名字
(4)not-null : true / false 是否有非空约束 , 不写时默认为没有非空约束(false)
(5)length : 长度 (对于数字写长度没有意义,有固定长度),不写时默认为255
属性可以不全写,写几个就在数据库中映射几个属性列
<?xml version="1.0"?> <!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.d_hdb_property.User" table="user"> <id name="id" type="int" column="id"> <generator class="native"/> </id> <property name="name" type="string" column="name"/> <property name="gender" type="boolean" column="gender"/> </class> </hibernate-mapping>
将属性删除几个,运行后,查看数据库中表结构
只有id、name和gender三个属性。
还有一种属性的书写方法:
<property name="name" type="string"> <column name="name" not_null="true" length="100"></column> </property>效果是一样的。
(5)大文本类型
对于5000字的大文本,有相应的大文本类型,用text类型,如果自动检测会映射出错,而且需要自己指定长度,防止自动设定长度太小
对于图片的二进制文件,用到binary,二进制类型,也是需要指定长度的
3、映射主键
<id>标签中的是指定的主键,其中generator是主键生成策咯,包括以下几种策咯
(1)identity :使用数据库的自动增长,在保存时会忽略手工指定的主键值而而由数据库生成,要求此属性为数字类型
(2)assigned : 手工指定,比如指定uuid,java代码指定
(3)uuid :由Hibernate生成UUID并指定为主键值,要求此属性为string型
(4)hilo :高低位算法生成主键,需要用到一个额外的表,所有数据库都可以使用这个类型,主键类型为数字类型
<generator class="hilo"> <param name="table"> hl_value</param> <param name="column">next_value</param> <param name="max_to">100</param> </generator>
生成了两个表,自己运行测试一下就知道大致用法,这个用的不太多
(5)native :最常用的,会自动选择合适的算法。根据底层数据库的能力选择identity 、sequence或者hilo中的一个
相关文章推荐
- Hibernate学习7 -- hibernate映射文件4 -- Generator元素
- Hibernate学习-映射文件
- hibernate学习(二)主配置文件/映射配置/主键映射
- Hibernate的学习之路三(映射文件编写)
- Hibernate学习---第三节:映射配置文件详解
- Hibernate学习9 -- hibernate映射文件6 -- 多对一元素
- [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))
- Hibernate学习之---传统的映射文件
- Hibernate学习(3) (继承映射,配置文件和注解版)
- Hibernate的学习之路三(映射文件编写)
- Hibernate学习8 -- hibernate映射文件5 -- property元素
- hibernate 映射文件的学习
- Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件
- Hibernate学习-08:配置-核心配置文件hibernate.cfg.xml、映射文件*.hbm.xml
- Hibernate学习6 -- hibernate映射文件3 -- id元素
- Hibernate学习之 -- 使用Middlegen-Hibernate-r5创建oracle10g的table的hibernate映射文件,Hibernate学习笔记三 ---持久化类和关系数据
- Hibernate学习笔记--映射配置文件详解
- Hibernate框架学习之三:深入映射文件的配置
- Hibernate学习之映射文件
- Sping 学习笔记10——Spring+Hibernate 加载映射文件几种方式