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 评论