1.简介
当使用对象关系映射(ORM)框架将Java对象持久存储到数据库记录中时,我们经常想忽略某些字段。如果框架符合Java Persistence API(JPA),则可以在这些字段中@Transient
在本教程中,我们将演示@Transient
批注的正确用法。我们还将研究它与Java内置的transient
关键字的关系。
2. @Transient
注释与transient
关键词
通常有一些困惑过关系@Transient
注释和Java的内置transient
关键字。 transient
关键字主要用于在Java对象序列化过程中忽略字段,但是它也可以防止在使用JPA框架时保留这些字段。
**换句话说,当保存到数据库中时transient
关键字的作用与@Transient
但是,@ @Transient
批注不会影响Java对象的序列化。
**
3. JPA @Transient
示例
假设我们有一个User
类,它是一个JPA实体,它映射到数据库中的Users表。当用户登录时,我们从“用户”表中检索其记录,然后在“ User
实体上设置一些其他字段。这些多余的字段与“用户”表中的任何列都不对应,因为我们不想保存这些值。
User
实体上设置一个时间戳,该时间戳表示用户何时登录其当前会话:
@Entity
@Table(name = "Users")
public class User {
@Id
private Integer id;
private String email;
private String password;
@Transient
private Date loginTime;
// getters and setters
}
当我们使用像Hibernate这样的JPA提供程序User
对象保存到数据库时,由于@Transient
批注loginTime
如果我们序列化此User
对象并将其传递给系统中的另一个服务,则loginTime
字段将包含在序列化中。如果我们不希望包括这个领域,我们可以更换@Transient
与注释transient
关键字来代替:
@Entity
@Table(name = "Users")
public class User implements Serializable {
@Id
private Integer id;
private String email;
private String password;
private transient Date loginTime;
//getters and setters
}
现在,在数据库持久性和对象序列化期间loginTime
4。结论
在本文中,我们研究了如何在典型的用例中@Transient
请务必查看有关JPA的其他文章,以了解有关持久性的更多信息。
0 评论