【问题标题】:How can I store an object (entity) in memory to get it later only in a working application with Hibernate?如何将对象(实体)存储在内存中,以便稍后仅在使用 Hibernate 的工作应用程序中获取它?
【发布时间】:2019-03-04 05:13:04
【问题描述】:

如何将对象(实体)存储在内存中,以便以后仅在使用 Hibernate 的工作应用程序中获取它?

@Entity
@Table(name = "users") 
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id; 

    @Column(name = "name") 
    private String name;

    @Column(name = "password")
    private String password;

    //without save this to database but in memory
    private boolean drunk;
}

如何通过变量“drunk”从内存中获取对象?

我现在用这个来获取对象:

session.createQuery("SELECT u FROM User u WHERE u.name LIKE :name")
                .setParameter("name", name)
                .getResultList();

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    您可以使用@Transient注解,它表示一个字段不被持久化到数据库中。

    import javax.persistence.Transient;
    
    @Entity
    @Table(name = "users") 
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private long id; 
    
        @Column(name = "name") 
        private String name;
    
        @Column(name = "password")
        private String password;
    
        //without save this to database but in memory
        @Transient
        private boolean drunk;
    }
    

    但是,您需要定义稍后从数据库中再次读取该值后如何设置该值。

    【讨论】:

    • 但是如何用字段保存这个对象以便以后获取呢?
    • 那么,您是否要将对象保存在数据库之外的某个位置以便以后访问它?
    • 不,仅在内存中。例如用户“喝醉了”(不需要保存到数据库)
    • 好吧,我想你需要看看会话对象,通常对于身份验证场景,我们使用它来保存用户数据,同时用户正在通过应用程序。这是一个如何使用它的例子stackoverflow.com/questions/33481815/…
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2014-03-07
    相关资源
    最近更新 更多