`

请您先登录,才能继续操作

java transient简介

 
阅读更多

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。

       然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,诚然,你可以让这个类来实现Externalizable接口,这个接口是Serilizable的子接口,但是你必须实现readExternal和writeExternal方法,你可以在这两个方法中实现具体属性的反序列化和序列化操作。然而这就意味着你必须在这两个方法中手工编写额外的代码来进行具体属性的序列化。java的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

 

@Transient的作用 :

用于注释pojo对象中的属性,被注释的属性将成为短暂的,不会持久化到数据库的“短暂”属性。

 
Hibernate annotation 的实体类中如果存在数据库中没有的字段,也就是我们常说的根据业务需求临时添加的一些字段供我们存放数据,那么就需要在新添加的这个字段中加上 @Transient 

例子:
package com.capinfo.plan.entity;

import java.sql.Blob;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 * @类功能说明:基本信息表
 * @创建时间:2013-6-18 上午10:15:45
 * @版本:V1.0
 */

@Entity
@Table(name = "baseinfo")
public class NationCheckunitBaseinfo implements java.io.Serializable {

 // Fields
 private static final long serialVersionUID = 4141383356877794599L;
 private String uuid;
 private String route;
 private Blob pic;
 private Date lastUpdateTime;
 //加签之后的字段
 private String signField;
 //验签返回值
 private String signFlag;
 // Constructors

 /** default constructor */
 public NationCheckunitBaseinfo() {
 }

 /** minimal constructor */
 public NationCheckunitBaseinfo(String uuid) {
  this.uuid = uuid;
 }

 /** full constructor */
 public NationCheckunitBaseinfo(String uuid, String route,
   Blob pic, Date lastUpdateTime,String signField) {
  this.uuid = uuid;
  this.route = route;
  this.pic = pic;
  this.lastUpdateTime = lastUpdateTime;
  this.signField = signField;
 }
// Property accessors
 @Id
 @Column(name = "UUID", unique = true, nullable = false, length = 36)
 public String getUuid() {
  return this.uuid;
 }

 public void setUuid(String uuid) {
  this.uuid = uuid;
 }


 @Column(name = "ROUTE", length = 100)
 public String getRoute() {
  return this.route;
 }

 public void setRoute(String route) {
  this.route = route;
 }

 @Column(name = "PIC")
 public Blob getPic() {
  return this.pic;
 }

 public void setPic(Blob pic) {
  this.pic = pic;
 }

 @Temporal(TemporalType.DATE)
 @Column(name = "LAST_UPDATE_TIME", length = 10)
 public Date getLastUpdateTime() {
  return this.lastUpdateTime;
 }
 public void setLastUpdateTime(Date lastUpdateTime) {
  this.lastUpdateTime = lastUpdateTime;
 }

 @Column(name = "SIGN_FIELD", length = 250)
 public String getSignField() {
  return signField;
 }

 public void setSignField(String signField) {
  this.signField = signField;
 }

 @Transient
 public String getSignFlag() {
  return signFlag;
 }

 public void setSignFlag(String signFlag) {
  this.signFlag = signFlag;
 }

}

数据库中将不会出现signFlag对应的字段
使用的时候,该字段可以直接存储到实体类中
NationCheckunitBaseinfo baseinfo = list.get(i);
//将验签返回结果放到实体类的flag字段中
String result = getSignResult(baseinfo);
baseinfo .setSignFlag(result);
也可以存放到map中
 Map map = list.get(i);
String nSignFlag = getSignResult(uuid,1, cardType,cardNumber,name,credentialCode);
String sSignFlag = getSignResult(uuid,2, checkIspass,examCardNum,getCardStatus,ttCode);
//将验签返回结果放到实体类的flag字段中
list.get(i).put("nSignFlag", nSignFlag);
list.get(i).put("sSignFlag", sSignFlag);
页面上:遍历时,该字段与其他字段一样使用 

分享到:
评论

相关推荐

    Java中的transient关键字.doc

    Java 中的 transient 关键字 在 Java 编程中,transient 关键字是一个非常重要的概念,它用来说明一个属性是临时的,不会被序列化。在 Java 中,序列化是指将对象的状态信息转换为字节流的过程,以便于对象在网络上...

    java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象持久化和序列化密切相关。当一个字段被声明为`transient`时,它表明该字段的值不会随着对象的序列化而保存。这通常用于那些不希望或者不需要在序列化...

    Java transient关键字使用小记

    在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列化过程中对特定变量的控制。当一个类实现了`Serializable`接口时,其对象可以被序列化为一个持久化的...

    transient Java语言的关键字

    transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,

    Java之transient关键字.Java

    在Java编程语言中,`transient`关键字是一个非常重要的特性,它用于标记对象的某个成员变量不应该被序列化。当你创建一个可序列化的类(通过实现`Serializable`接口)时,如果你不想某些字段在序列化过程中被保存或...

    Java关键字Transient与串行化

    ### Java序列化简介 序列化是将对象的状态转换为可以存储或传输的格式的过程。在Java中,通过实现`java.io.Serializable`接口,一个类可以使其实例被序列化。当一个对象被序列化时,它的状态会被编码成一系列字节,...

    Java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...

    java中transient关键字用法分析

    主要介绍了java中transient关键字用法,以实例形式分析了java中transient关键字的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Java transient关键字原理解析

    Java transient关键字原理解析 Java 中的 transient 关键字是一个重要的概念,它被用来表示变量将不被序列化处理。那么在理解 transient 关键字之前,我们先了解下什么是序列化。 序列化是对象进行持久化处理,也...

    Java transient 关键字详解及实例代码

    Java中的`transient`关键字是用于标记类的成员变量,表明该变量不应该参与序列化过程。当一个类实现了`Serializable`接口,其对象可以被序列化,即将对象的状态转换为字节流,以便存储或在网络中传输。序列化是Java...

    Java transient关键字与序列化操作实例详解

    Java transient关键字与序列化操作实例详解 Java语言中的transient关键字是用来修饰变量的,表明该变量不会被Java虚拟机(JVM)序列化,即不会被写入到二进制流中。序列化是Java语言中的一种机制,用于将对象转换为...

    举例浅谈Java关键词transient的使用

    import java.io.*; public class PersonMapper { private PersonMapper() {} private static PersonMapper mapper; /** * 获取单例 * @return 单例 */ public static PersonMapper getInstance() { if ...

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...

    javafaq javafaq javafaq

    【Java编程:transient关键字详解】 在Java编程中,`transient`关键字有着特殊的作用,它主要用于处理对象的序列化过程。序列化是Java提供的一种将对象的状态转换为字节流,以便存储到磁盘或者在网络中传输的技术。...

    Java关键字—-transient

    写一段代码理清序列化、反序列化的流程。本篇文章序列化、反序列化用的类是同一个类,可以通过注释main中1然后修改Stu类实现有无transient关键字修饰、...import java.io.*; public class SerializableDemo {

    Java中的transient关键字介绍

    在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化密切相关。序列化是指将对象的状态转换为字节流,以便存储或在网络上传输。当一个类实现了`Serializable`接口,它的实例就可以被序列化...

Global site tag (gtag.js) - Google Analytics