@Transient 注解的小功能

Transient 注解

解释

这个注解是hibernate框架的注解。它用于注释实体类、映射超类或可嵌入类的属性或字段。

文档中是这么说明的:

Specifies that the property or field is not persistent. It is used
to annotate a property or field of an entity class, mapped
superclass, or embeddable class.

Example:
  
      @Entity
      public class Employee {
          @Id int id;
          @Transient User currentUser;
          ...
      }

简单来说:在实体类中,想要添加表中不存在的字段,就要使用@Transient这个注解了。

使用 @Transient 表示该属性并非是一个要映射到数据库表中的字段,只是起辅助作用,ORM框架将会忽略该属性。

  1. 简单查询情况下,hibernate会自动根据实体类对象的属性映射表字段时,使用 @Transient的属性会被忽略掉,解决未知字段等查询时异常等问题
  2. 当开启hibernate的自动建表功能时, 实体类添加新的属性时,并使用 @Transient注解时,hibernate就会自动忽略这个属性(字段),不会自动根据实体类对象更新表结构(其他未使用 @Transient注解的字段不受影响,该更新还是会更新)

使用

注解可以加在属性上;也可以加在**getXXX()**上面(但是我的放在get上报错,放在属性上可使用)

例如:


/**
 * 用户表
 */
@Entity
@Table(name="t_user")
public class UserEntity extends AbstractEntity{

    private static final long serialVersionUID = 8868175499339233168L;
    
    /**
     * 登录用户名
     */
    @Column(name="user_name",unique=true)
    private String userName;
	
    /**
     * 中文用户名
     */
    @Column(name="user_name_cn")
    private String userNameCn;
	
    /**
     * 密码
     */
    @Column(name="password")
    private String password;
    
    
    /**
     * 备注
     */
    @Lob
    @Column(name="remarks")
    private String remarks;
    
    
    /**
     * 角色实体
     * 数据库操作就会忽略掉这个属性
     */
    @Transient
    private RoleEntity roleInfo;
    
   /**
   	*	此处省略了get/set 方法
	*/
}



备注

  1. 可以跟java关键字中的transient这个关联,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。换句话来说就是,用transient关键字标记的成员变量不参与序列化(串行化)过程。
  2. Hibernate支持自动建表的属性配置
在配置hibernate的配置文件中将hbm2ddl.auto的值设置为update
	如:Xml代码<property name="hbm2ddl.auto">update</property>
	
	create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。
	
	update:表示自动根据实体类对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。
	
	create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。
	
	validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

要注意的是:数据库要预先建立好,因为hibernate只会建表,不会建库!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值