JPA实体静态日志记录器

5

我的问题是,我能否在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;

...
1个回答

7

使用标准的JPA,静态字段不会被持久化,而final字段也不会被持久化,因此这不是问题。


如果我使用缓存:@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)会怎样?实际上,我们有一些内存泄漏,堆转储显示了这个实体... - Kari5
该类被初始化并创建了一个Logger,这就是全部内容。持久化过程(无论使用哪种JPA实现)都不应该对其进行任何操作(DataNucleus JPA肯定不会)。 - DataNucleus
1
如果您的记录器不是静态的,请使用@Transient。请参见https://dev59.com/iHM_5IYBdhLWcg3wq1CF - Nico Toub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接