`
software_developer
  • 浏览: 34018 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate学习笔记(1):属性类型映射(不常用注解)

阅读更多

1)、映射日期与时间类型,指定时间精度
  Annotation:
  用法:@Temporal(参数)
  说明:参数有3种 只显示时间,只显示日期,时间日期都显示
  举例:
  @Temporal(TemporalType.DATE)  只显示日期
  @Temporal(TemporalType.TIME)  只显示时间
  @Temporal(TemporalType.TIMESTAMP)  显示日期与时间
  如果时间字段上不加@Temporal,则默认是日期与时间类型,数据库会创建(datetime)类型

  @Temporal(TemporalType.TIME)
   public Date getBirthDate() {
     return birthDate;
   }


 
  xml:指定 type
     <class name="Monitor" table="T_Monitor" >
          <id name="id" column="id"></id>
          <property name="monitorTime" type="time" />
     </class>

 

2)、映射枚举类型
  Annotation:
  用法:@Enumerated(参数)
  说明:参数有两种,整形和字符串
  举例:
  @Enumerated(EnumType.ORDINAL) 枚举类型按位置数,如:0,1,2 ...存储
  @Enumerated(EnumType.STRING)  枚举类型按设定值存储,数据库会创建varchar类型
  如果枚举字段上不加@Enumerated,则默认按照整形存储,数据库会创建int类型

  public enum Gender {
     MALE, FEMALE
   }

   @Enumerated(EnumType.STRING)
   public Gender getGender() {
       return gender;
   }

 

3)、大数据字段类型映射
  Annotation:
  用法:@Lob
  说明:a.被@Lob注解的属性会被映射成数据库Blob类型或Clob类型
 b.属性类型为java.sql.Clob, Character[], char[],java.lang.String,则会被映射成Clob数据库类型
   属性类型为java.sql.Blob,Byte[], byte[] and Serializable,则会被映射成Blob数据库类型
 c.注解要加在get属性上才有效,加载字段上不起作用

 d.由于用@Lob注解的都是大数据,所以经常和@Basic(fetch=FetchType.LAZY)注解一起用
  举例:
        @Lob
 public String getRemark() {
  return remark;
 }
 @Lob
 public byte[] getPic() {
  return pic;
 }
 在SQLServer数据库中会映射成:remark text null , pic image null
 在MySql数据库中会映射成:remark longtext , pic longblob

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics