Java 关键字transient与注解@Transient的区别用途解析
在Java中,transient 是一个关键字,用于声明一个字段不会被序列化。
当一个对象被序列化时,被声明为 transient 的字段将不会被保存到序列化的结果中
主要用途:
敏感信息隐藏: transient 可以用于隐藏对象中的敏感信息,确保它们不会被持久化到存储设备或通过网络传输
临时数据: 有些字段在持久化时不需要被保存,比如缓存或临时计算的数据
注意事项:
transient 只能用于字段,不能用于类或方法
被声明为 transient 的字段在反序列化时会被设置为默认值,如 null(对于对象)、0(对于基本数据类型)或 false(对于布尔类型)
序列化过程中,transient 字段的内容不会被保存到序列化结果中
transient 只影响对象的序列化,不影响其它方面的行为,比如字段的访问权限等。
public class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Person person = new Person("Alice", "123456");
// 序列化对象
FileOutputStream fileOutputStream = new FileOutputStream("序列化对象.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOutputStream);
out.writeObject(person);
out.close();
// 反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("序列化对象.txt"));
Person deserializedPerson = (Person) in.readObject();
in.close();
// 输出反序列化后的对象
// Person{name='Alice', password='null'}
System.out.println(deserializedPerson.toString());
}
}在Java的POJO中,@Transient注解的主要作用是标记某个字段不需要被持久化到数据库。具体来说:
与Java transient关键字的区别:
transient关键字是Java原生特性,用于标记字段在对象序列化时(如通过Serializable接口)应被忽略。
@Transient注解则是针对数据持久化的,仅影响ORM框架的行为,不影响序列化。
注意:JPA默认也会忽略用transient关键字修饰的字段,但显式使用@Transient注解更符合规范且可读性更强。
import javax.persistence.Entity;
import javax.persistence.Transient;
@Entity
public class User {
private Long id;
private String username;
private String password;
@Transient // 该字段不会保存到数据库
private String confirmPassword;
// Getters and Setters
}总结:@Transient注解在POJO中用于标识字段无需持久化到数据库,常用于临时数据或避免ORM框架的映射错误。注意区分它与Java transient关键字的不同应用场景。
到此这篇关于Java 关键字transient与注解@Transient的区别的文章就介绍到这了,更多相关java transient与注解@Transient内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringMVC源码解读之 HandlerMapping - AbstractDetectingUrlHandlerM
这篇文章主要介绍了SpringMVC源码解读之 HandlerMapping - AbstractDetectingUrlHandlerMapping系列初始化的相关资料,需要的朋友可以参考下2016-02-02
Java synchornized与ReentrantLock处理并发出现的错误
synchronized机制提供了对每个对象相关的隐式监视器锁,并强制所有锁的获取和释放都必须在同一个块结构中。当获取了多个锁时,必须以相反的顺序释放。即synchronized对于锁的释放是隐式的2023-01-01
java实现利用String类的简单方法读取xml文件中某个标签中的内容
下面小编就为大家带来一篇java实现利用String类的简单方法读取xml文件中某个标签中的内容。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-12-12
Java Stream 的 forEachOrdered 与 forE
在Java Stream API中,forEach和forEachOrdered是两个常用的终止操作,用于对流中的元素执行迭代处理,本文将从多个维度深入分析Java Stream的forEachOrdered与forEach的区别与适用场景,感兴趣的朋友一起看看吧2025-08-08
SpringCloudGateway 自定义局部过滤器场景分析
这篇文章主要介绍了SpringCloudGateway 自定义局部过滤器场景分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2025-06-06
基于springboot拦截器HandlerInterceptor的注入问题
这篇文章主要介绍了springboot拦截器HandlerInterceptor的注入问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09


最新评论