【JPA】基本注解

注解名功能
@Entity使一个类成为实体类,将映射到指定的数据库表
例如如果注解到实体类Customer上,将会映射到customer表上
@Table(name=“JPA_CUSTOMERS”)实体类与其映射的数据库表名默认一样的,使用这个注解可以自定义类对应的表的名字。
例如左边这个注解就是将表名改为了JPA_CUSTOMERS
需要和@Entity注解并列使用
@Id声明一个实体类的属性为数据库的主键列
要加到get方法上
@GeneratedValue通过注解的strategy属性指定主键的生成策略,
MySQL对应的是autoincrement
@Column实体的属性与其映射的数据库表的列不同名时使用
@Transient实体类中的方法我们都是默认会在数据库中添加字段的,如果不希望自动添加该字段的话,可以在方法上方添加该注解
@Temporal调整时间类型参数的时间精度,
有DATE、TIME、TIMESTAMP三种精度



一些例子:
@Column(name="PERSON_ID",length=10,nullable=false)
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
public Integer getPersonId(){
	return personId;
}

首先类的属性personId在数据库中字段名为"PERSON_ID",字段长度为10,不可为空
然后这个属性是表的主键列(@Id)
最后这个主键列的生成策略是auto increment

// 工具方法,不需要映射为表的一个字段
@Transient
public String getInfo() {
	return "lastName:"+lastName+", email:"+email;
}

这里的getInfo()方法是或者实体的一些信息,但是只要是在实体类中的方法,JPA都会尝试将属性加入到数据库表中一个字段中去。如果该方法上方不添加Transient注解,则数据库会存在"Info"字段的数据,或者运行时直接报错。加了@Transient之后,getInfo()就只是一个普通的方法了。


@Temporal(TemporalType.DATE)
public Date getBirth() {
	return birth;
}

@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedTime() {
	return createdTime;
}

上面两个方法是获得用户的生日和当前的一个时间点。如果不添加注解@Temporal,两个日期都会精确到年月日小时分钟秒,但是在getBirth()这个方法上方加上注解@Temporal(TemporalType.DATE)后,获得的日期就只会精确到年月日,不会到小时分秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值