【问题标题】:JPA Entity static loggerJPA 实体静态记录器
【发布时间】:2013-06-22 07:24:20
【问题描述】:

我的问题是,我可以在 JPA 实体中使用静态记录器,还是会导致一些问题? 我想做这样的事情(记录器是 log4j):

    @Entity
public class AlertRule implements Serializable {
/**
 * Serial version ID.
 */
private static final long serialVersionUID = 9000392523924653431L;

/**Logger. */
transient private static final Logger LOGGER = Logger.getLogger(AlertRule.class);

/**
 * ID.
 */
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;

/**
 * Rule name.
 */
@NotNull
private String name;

...

【问题讨论】:

    标签: jakarta-ee jpa logging static log4j


    【解决方案1】:

    使用标准JPA,静态字段不持久化,final字段不持久化,所以不是问题

    【讨论】:

    • 如果我使用缓存会怎样:@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)?事实上,我们有一些内存泄漏,堆转储显示了这个实体......
    • 该类被初始化并创建了一个 Logger,仅此而已。持久化进程(无论你使用哪种 JPA impl)都不应该对它做任何事情(DataNucleus JPA 肯定不会)。
    • 如果您的记录器不是静态的,请使用@Transient。见stackoverflow.com/questions/1281952/…
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多