Hibernate 映射基础
来源:互联网 发布:爱淘宝1元天猫购物券 编辑:程序博客网 时间:2024/04/29 07:11
Hibernate 对持久化对象的要求
1、提供一个无参的构造器,使Hibernate可以使用Constructor.newInstance()来实例化持久化类。
注意:在java的类中如果没有指定构造函数,那么会有一个默认的构造函数。如果手动定义了一个有参的构造函数,那么此时默认的无参构造函数 将不存在,应该再定义一个无参构造函数。
2、提供一个标示属性,通常映射为数据库表的主键字段。
3、为持久化类的字段声明get/set 方法
4、使用非final类,如果使用fianl类,会影响懒加载特性。
5、重写equals()和hashCode()方法,如果需要把持久化类的实力放到set集合(当需要进行关联映射时)中,则应该重写这两个方法。
一般每一个实体类对应一个*.hbm.xml文件。配置方法及属性如下:
<hibernate-mapping><!-- name属性:哪个类table属性:对应哪个表,如果不写,默认的表名就是类的简单名称 --><class name="edu.fjnu.domain.User" table="t_user"><id name="id" type="int" column="id"> <generator class="sequence"> <param name="sequence">SEQUENCE_ON_USER</param> </generator></id><!-- 普通属性(数据库中的基本类型,如字符串、日期、数字等)name属性:对象的属性名,必须有type属性:类型,如果不写,Hibernate会自动检测可以写Java中类的全名或是写hibernate类型 column属性:对应的表中的列名,如果没有默认为属性名。length属性:长度,不是所有的类型都有长度属性,比如vachar2有,但int没有, 如果不写默认为255not-null:非空约束,默认为false --><property name="name" type="string" column="name" length="20" not-null="true"/><property name="age" type="int" column="age"/><property name="birthday" type="date" column="birthday"/><!-- 当列名与关键字冲突时,可以通过column属性指定一个其他的列名。 或是使用反引号包围起来 指定使用text类型时,最好再指定length,以确定生成的SQL类型是能够存放指定数量的字符的 --><property name="desc" type="text" length="5000" column="`desc`"/><!-- 图片,二进制类型,最好指定长度 --><property name="photo" type="binary" length="102400"></property></class></hibernate-mapping>
映射主键属性
第7行class中可以指定主键生成的策略:
1、identity:使用数据库的自动增长策略,不是所有数据库都支持,比如oracle就不支持
2、sequence:oracle中可以使用序列来让主键自动增长
3、hilo:使用高地位算法来生成的主键值。只需要一张额外的表,所有的数据库都支持
4、native:根据底层数据库能力选择identity、sequence、hilo中的一个。
5、increment:先查询当前最大的id值,再加1使用,由hibernate维护的自动增长,有多线程下会有
6、assigned:手动指定一个主键值
7、uuid:由hibernate自动生成UUID并指定为主键值
<hibernate-mapping package="edu.fjnu.hbm_id"><class name="User" table="t_user"><!-- id元素用户映射主键 子元素generator是用于指定主键生成策略的 --><id name="id" type="int" column="id"> <generator class="assigned"/></id><property name="name" type="string" column="name" length="20" not-null="true"/></class></hibernate-mapping>
- 基础:Hibernate的映射
- Hibernate基础映射
- Hibernate基础映射
- Hibernate关系映射基础
- Hibernate 映射基础
- 【hibernate】基础映射
- hibernate基础------>hibernate集合映射--->set映射
- Hibernate基础------》关系映射---》组件映射(component)
- 基础:Hibernate映射引用属性
- Hibernate -- 对象关系映射基础
- 【SSH 基础】浅谈Hibernate映射
- Hibernate对象-关系映射基础
- 【SSH 基础】浅谈Hibernate映射
- 【Hibernate】(四)基础映射
- Hibernate基础------》映射关系---》many2many
- Hibernate基础------》映射关系---》one2one
- Hibernate基础------》单向映射--->one2one
- 【Hibernate】(四)基础映射
- SQLite – 编译指示
- 微信支付--工具类--组包
- 2014校园招聘总结
- 添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试
- DNS 解析服务器
- Hibernate 映射基础
- How to Identify and Resolve Hibernate N+1 SELECT's Problems
- 计算机网络之概念解析
- Java中的equals与hashCode方法(判断插入容器的内容是否重复)
- uva 11732 "strcmp()" Anyone?(字典树)
- 将一个带有‘?’的数拆解成两个由4-7组成的数,求该数最小值 回溯法 数学 SRM 665 Div2 Hard LuckySum
- 在CentOS7.0上安装node.js(express.js)
- 泣血推荐 各种java 技术api地址
- 1.添加mysql的jar包 2.加载JDBC驱动