Hibernate annotation detail

 1.声明实体bean

每一个持久化POJO类都是一个实体bean,这可以通过在类的定义中使用@Entity注解来进行声明:

@Entity
public class Flight implements Serializable {
    Long id;

    @Id
    public Long getId() { return id; }

    public void setId(Long id) { this.id = id; }
}
通过 @Entity注解将一个类声明为一个实体bean(即一个持久化POJO类)
2. 定义表(Table)

@Table是类一级的注解,通过@Table注解可以为实体bean映射指定表(table),目录(catalog)和schema的名字.如果没有定义@Table,那么系统自动使用默认值:实体的短类名(不附带包名).

@Entity
@Table(name="tbl_sky")
public class Sky implements Serializable {
...
            

@Table元素包括了一个schema和一个 catalog属性,如果需要可以指定相应的值.


3.声明列属性

使用 @Column 注解可将属性映射到列.使用该注解来覆盖默认值(关于默认值请参考EJB3规范).在属性级使用该注解的方式如下:

  • 不进行注解

  • @Basic一起使用

  • @Version一起使用

  • @Lob一起使用

  • @Temporal一起使用

  • @org.hibernate.annotations.CollectionOfElements一起使用 (只针对Hibernate )

@Entity
public class Flight implements Serializable {
...
@Column(updatable = false, name = "flight_name", nullable = false, length=50)
public String getName() { ... }
            

在上面这个例子中,name属性映射到flight_name列.该字段不允许为空,长度为50,并且是不可更新的(也就是属性值是不变的).


4.透明化

实体bean中所有的非static非transient的属性都可以被持久化,除非你将其注解为@Transient.所有没有定义注解的属性等价于在其上面添加了@Basic注解.通过@Basic注解可以声明属性的获取策略(fetch strategy):

public transient int counter; //transient property

private String firstname; //persistent property

@Transient
String getLengthInMeter() { ... } //transient property

String getName() {... } // persistent property

@Basic
int getLength() { ... } // persistent property

@Basic(fetch = FetchType.LAZY)
String getDetailedComment() { ... } // persistent property

@Temporal(TemporalType.TIME)
java.util.Date getDepartureTime() { ... } // persistent property           

@Enumerated(EnumType.STRING)
Starred getNote() { ... } //enum persisted as String in database
上面这个例子中, counter是一个transient的字段, lengthInMeter的getter方法被注解为 @Transient, entity manager将忽略这些字段和属性.


5.  映射日期与时间类型,指定时间精度

 Annotation:@Temporal(参数) 参数有3种 只显示时间,只显示日期,时间日期都显示

       //@Temporal(TemporalType.DATE)  只显示日期

       //@Temporal(TemporalType.TIME)  只显示时间

//@Temporal(TemporalType.TIMESTAMP)  显示日期与时间



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值