hibernate知识

Hibernate注解详解

@Column —— 注解声明了属性到列的映射。该注解有如下的属性 
  name  可选,列名(默认值是属性名) 
  unique 可选,是否在该列上设置唯一约束(默认值false) 
  nullable 可选,是否设置该列的值可以为空(默认值false) 
  insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true) 
  updatable 可选,该列是否作为生成的update语句中的一个列(默认值true) 
  columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植) 
  table 可选,定义对应的表(默认为主表) 
  length 可选,列长度(默认值255) 
  precision 可选,列十进制精度(decimal precision)(默认值0) 
  scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)  
 precision属性和scale属性表示精度时,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。

@Digits(integer=12, fraction=3)  检查此值是否是一个数字,并且这个数字的整数部分不超过integer定义的位数, 和小数部分不超过fraction 定义的位数.[对应的数据库表字段会被设置精度(precision)和准度(scale)]

@Email   检查所给的字符串是否符合email地址的格式

@Future 检查给定的日期是否比现在晚

@Past检查标注对象中的值表示的日期比当前早.

@Length(min=, max=)检查该字符串的长度是否在min 和 max规定的范围内.[对应的数据库表字段的长度会被设置成约束中定义的最大值]

@Max检查该值是否小于或等于约束条件中指定的最大值.[会给对应的数据库表字段添加一个check的约束条件]

@NotNull检查该值不为null[对应的表字段不允许为null]

@NotBlank检查该字符串不为null,并且不是空字符串. 本约束和下面的@NotEmpty的不同之处在于,本约束只能被用在字符串类型上,并且会忽略字符串尾部的空

@NotEmpty检查该值不为null同时也不为空.

@Null检查该值应该为null.

@Range(min=, max=)检查该值是否在[min, max)之间

@Size(min=, max=)检查该值的size是否在[min, max)之间.[对应的数据库表字段的长度会被设置成约束中定义的最大值.]

@URL(protocol=, host=, port=)判断该值是否是一个有效的URL, 如果给出了约束中的protocol, host 或 port 参数的话,那个被校验的值需要和其匹配.

@Valid 递归得对关联对象进行校验, 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.

@Transient表示该属性并非是一个到数据库表的字段的映射,ORM框架将忽略该属性.
被注解成 @Transient 的 getter 方法或属性,将不会被持久化,hibernate 会忽略这些字段和属性。
 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic

@Basic 所有没有定义注解的属性,等价于在其上面添加了 @Basic 注解。通过 @Basic注解可以声明属性的获取策略 ( fetch strategy ),默认的是即时获取(early fetch),这里又讨论到了 
延迟关联获取和延迟属性获取,通常不需要对简单属性设置延迟获取,如需要定义@Basic(fetch=FetchType.LAZY) 
通过@Basic注解可以声明属性的获取策略(lazy与否),默认的是即时获取(early fetch),这里又讨论到了 
延迟关联获取和延迟属性获取,通常不需要对简单属性设置延迟获取,如需要定义@Basic(fetch=FetchType.LAZY)

@OrderBy(value = "id ASC") 指明加载OrderItem 时按id 的升序排序

hierbate search注解【基于lucene】

@DateBridge(resolution = Resolution.SECOND) 因为lucene有些版本现在貌似只能对字符串进行索引【新的版本貌似支持数值索引】,所有date类型需要转换成string,Resolution.SECOND就是解析成秒格式的字符串,有以下参数

Resolution.YEAR: yyyy

Resolution.MONTH: yyyyMM

Resolution.DAY: yyyyMMdd

Resolution.HOUR: yyyyMMddHH

Resolution.MINUTE: yyyyMMddHHmm

Resolution.SECOND: yyyyMMddHHmmss

Resolution.MILLISECOND: yyyyMMddHHmmssSSS

@MappedSuperclass  基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个共同属性封装到非实体类中,适合父类和子类的关系

0、 @MappedSuperclass注解只能标注在类上

1、标注为@MappedSuperclass的类将不是一个完整的实体类,他不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。

2、标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。

3、如果一个标注为@MappedSuperclass的类继承了另外一个实体类或者另外一个同样标注了@MappedSuperclass的类的话,他将可以使用@AttributeOverride或@AttributeOverrides注解重定义其父类(无论是否是实体类)的属性映射到数据库表中的字段。比如可以重定义字段名或长度等属性,使用@AttributeOverride中的子属性@Column进行具体的定义。

    注意:对于其父类中标注@Lob注解的属性将不能重载,并且@AttributeOverride里的@Column设置都将不起作用。JPA规范中对@Lob注解并没有说明不能同时标注@Column注解,但是在实际使用中Hibernate JPA不支持这种标注方式。

4、标注为@MappedSuperclass的类其属性最好设置为protected或default类型的,以保证其同一个包下的子类可以直接调用它的属性。

hibernate在Intellij IDEA 中自动将数据库表映射成实体类

http://www.cnblogs.com/flowwind/p/4751984.html

时间: 2024-11-05 02:22:13

hibernate知识的相关文章

hibernate 知识梳理

一.hibernate背景介绍: 作者: Gavin King 分hibernate ORM(for relation db),OGM(for nosql db),hearch,validator,tools..等模块. Hibernate ORM 最新版本 4.4.5.Fianal. 架构图 二 hibernate.cfg.xml 配置文件详解. <session-factory> 会话工厂中配置 1. 数据库的连接属性 2.连接池数量,是否显示sql.. 3.相应的映射文件位置. 三  *

【Hibernate那点事儿】—— Hibernate知识总结

前言: 上一篇简单的讲解了下Hibernate的基础知识.这里对Hibernate比较重要的一些知识点,进行总结和归纳. 手码不易,转载请注明!——xingoo 总结的知识点: 1 关于hibernate映射的实体类标识符访问权限 2 关于对象描述标识符OID及其生成策略 3 Session缓存——清理缓存 4 Session中的状态变更 5 Session中的常用方法 首先简单的看下整理的思维导图,还没有整理完,所以仅仅是一部分而已. 关于Hibernate映射 关于Hibernate的映射要

Hibernate知识梳理

一.SessionFactory接口 是单个数据库映射关系(ORM)经过编译后的内存镜像.SessionFactory(的实例)作为应用中的一个全局对象(工厂),可以随处打开/创建一个session,用来进行数据库CRUD操作. SessionFactory的实例是线程安全的,创建和维护SessionFactory实例的代价都很高,这也决定不会频繁地创建它.通常一个应用(数据库)只对应一个SessionFactory(单例),在应用启 动时创建和一次性静态初始化,在应用退出时关闭.Session

Hibernate知识总结(一)——Hibernate原理概述

Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象来进行的,session是由sessionFactory生产的,sessionFactory是通过读取配置文件(hibernate.cfg.xml)而创建的. Hibernate核心配置文件: hibernate.cfg.xml 它是Hiberante的核心配置文件.在该文件里需配置要连接的数据库的UR

Hibernate读书笔记-----Hibernate知识总结

一.Hibernate开发流程 Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去.主要是完成面向对象的编程语言到关系型数据库的映射 Hibernate的开发流程一般有如下几个步骤: 1.编写domain对象:持久化类. 2.加入hibernate.jar和其依赖的包. 3.编写XX.hbm.xml映射文件. 4.编写hibernate.cfg.xml配置文件.必须要提供以下几个参数:connection.drive

HIBERNATE知识复习记录4-HQL和QBC

Hibernate中共提供了三种检索方式:HQL(Hibernate Query Language).QBC.QBE(Query By Example). HQL 是Hibernate Query Language的简写,即hibernate查询语言:HQL采用面向对象的查询方式. QBC(Query By Criteria) API提供了检索对象的另一种方式,它主要由Criteria接口.Criterion接口和Expresson类组成,它支持在运行时动态生成查询语句. HQL 查询包括以下步

Java开发者必读的5本最佳Hibernate书籍

Java开发者必读的5本最佳Hibernate书籍 分享到:17 本文由 ImportNew - will 翻译自 javarevisited.欢迎加入Java小组.转载请参见文章末尾的要求. Hibernate是最受欢迎的开源ORM(Object Relational Mapping 对象关系映射)框架之一,并且随着JPA的出现,它已成为开发Java企业级应用持久层的一个标准.我经常会收到这样一些反馈,如”哪本是学习hibernate最好的书籍”或”请推荐一些学习Spring和Hibernat

Hibernate在处理数据量比较大的时候内存不释放的解决方案

随着信息化的推进,系统的依赖性也变的越来越强,所以各种数据不断积累,数据开发率并不高,所以数据还不能准确高效的使用,这个时候我们就需要将数据导出到Excel然后通过手工的方式进行处理,但是当讲数据库的数据查询出来的时候,发现JVM的内存持续升高,知道内存溢出,一开始我以为是list太大的原因,我将list固定到1w,然后不断循环去数据库取数据,发现问题依旧存在,没有任何改变,所以说明问题的出处,不在LIST,于是继续寻找,开始进行无用代码隔离,发现问题出现在了hibernate,仔细测试,找到了

SpringMVC配置实例

一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--DispatcherServlet以及控制器组件 二.控制器组件 1).DispatherServlet 2).xxx-servlet.xml文件 3).转向模型ModelAndView类 4).相应的Aop组件和拦截器组件 三.springMvc的开发步骤 1.在当前工程引入spring组件包 2.编写