首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate 引语概述

2012-10-09 
Hibernate 注解概述Hibernate 注解定义在 class 上面的注解 :?实体 @Entity?表 @Table?Sequence 自定义名

Hibernate 注解概述

Hibernate 注解

定义在 class 上面的注解 :

?实体 @Entity

?表 @Table

?Sequence 自定义名字 @SequenceGenerator(name="mySeq" , sequenceName="mySeq_DB")
?
?表生成器 @java.persistence.TableGenerator(
???name = "表生成器的名字:myTableGen" ,
???table = "表生成器的表明:GENERATOR_TABLE" ,
???pkColumnName = "表中key字段的名字:pk_key" ,
???valueColumnName = "表中value字段的名字:pk_value" ,
???pkColumnValue = "第一条记录key字段的数据:table1" ,
???allocationSize = 1 取完数值后数值步进的数值
??)

定义在 属性上面的注解 :

?如果字段上面不写任何注解 默认 @Basic

?主键ID @id

?主键的生成策略 @GeneratedValue 默认auto? 相当于 native ;@GeneratedValue(stratege=Generation.SEQUENCE , generator="mySeq"/**只有上面定义了才能使用*/)
?此时这个表 才用的是这个自定义的 Sequence
?
?另一种主键的生成策略?@GeneratedValue(stratege=Generation.TABLE , generator="myTableGen"/**只有上面定义了才能使用*/)

?定义符合主键的三种方式 :
??1、将组件类注解为 @Embeddable ,并将组件的属性注解为 @id
??2、将组件的属性注解为 @EmbeddedId
??3、将类注解为 @IdClass(组件类.class) ,并将该实体中的所有属于主键的属性注解为 @Id
?字段 @Column(name="字段名字" , length="长度" , precision="精度")

?透明 @Transient :不会在数据库中创建该字段

?时间日期字段设置精度 @Temporal:日期时间 、@Temporal(TemporalType.DATE):日期 、@Temporal(TemporalType.TIME):时间

?枚举 @Enumerated(EnumType.STRING):枚举的名字? 、@Enumerated(EnumType.ORDINAL) :枚举的下标值

注意 :
?
?Hibernate 注解应当写在 getXxx() 方法上面,而不是写在属性上面
原因 :
?破坏了 Java 的封装的特性,属性都是 private 的,不应该被Hibernate所访问
?Hibernate 可以访问你的私有属性 甚至可以修改

?Hibernate load 和 get 区别
?load 是懒加载? 当你取 对象里面的属性值的时候才真正的去执行 SQL 语句
?get? 是立即执行 SQL 查询 然后直接付给 对象使用

热点排行