我见过的大多数 JPA/Hibernate 实体 bean 类的示例似乎都没有显式同步。然而,可以在构建事务的上下文中调用这些对象的 getter/setter。并且有可能跨多个线程调用这些方法(尽管这可能是不寻常和奇怪的)。
似乎如果它是跨多个线程构建的,那么对对象状态的更改可能会丢失,这将是可悲的。
那么,省略同步是最佳实践吗?Hibernate 检测代码是否为我处理了正确的同步?
举个例子:
@Entity
public class Ninja {
@Id @GeneratedValue
private Long id;
@Column
private String name;
@Column
private int throwingStars;
public Ninja() {}
public int getThrowingStars() { return throwingStars; }
public void addThrowingStar() { throwingStars += 1; }
}
投掷星方法需要同步吗?我当然不希望我的忍者失去任何投掷的星星。