【发布时间】:2012-01-07 20:09:42
【问题描述】:
我正在使用 EJB/JPA,并且我创建了一个名为 createDataset 的静态方法,它将查找 Dataset 对象。每次我必须插入、更新、删除等实体时,我都会检索一个调用 DatasetFactory.createDataset() 的 DatasetObject 并调用适当的方法(插入、更新等)。
代码:
public class DatasetFactory {
public static Dataset createDataset() {
try {
return (Dataset) new InitialContext().lookup("java:global/.../Dataset");
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
public interface Dataset<T> {
void insert(T entity);
//...
}
@Stateless
@EJB(name = "java:global/.../Dataset", beanInterface = Dataset.class)
public class DatasetBean<T> implements Dataset<T> {
@PersistenceContext(type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;
@Override
public void insert(T entity) {
entityManager.persist(entity);
}
//...
}
使用这种方法我会遇到线程安全问题吗?如果是这样,我应该做哪些修改?我应该将 synchronized 修饰符放在 DatasetFactory.createDataset() 中吗?
非常感谢!
【问题讨论】:
标签: java hibernate jpa thread-safety ejb