当前位置: 代码网 > it编程>编程语言>Java > Java 关键字transient与注解@Transient的区别用途解析

Java 关键字transient与注解@Transient的区别用途解析

2025年05月27日 Java 我要评论
在java中,transient 是一个关键字,用于声明一个字段不会被序列化。当一个对象被序列化时,被声明为 transient 的字段将不会被保存到序列化的结果中主要用途:敏感信息隐藏: trans

在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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com