JPA 2.0은 EntityListener (JPA 2.1) 로의 주입을 지원하지 않으므로 JNDI 조회를 사용하여 BeanManager
을 얻고이를 통해 로그인 한 사용자를 얻습니다. 나는이에 EntityListener
유사한 정의 : 어떤 단점이나 지점이 방법의주의가 지불하는 것입니다 알고 싶어EntityListeners에서 CDI 주입
@SessionScoped
public class UserManager implements Serializable {
private User loggedInUser;
@Produces
@Named("loggedInUser")
public User getLoggedInUser() {
return loggedInUser;
}
// Set the logged in user after successfully login action
}
:로
public class MyEntityListener {
public static BeanManager getBeanManager() {
try {
InitialContext initialContext = new InitialContext();
return (BeanManager) initialContext.lookup("java:comp/BeanManager");
} catch (NamingException e) {
e.printStackTrace();
return null;
}
}
public Object getBeanByName(String name) {
BeanManager bm = getBeanManager();
Bean bean = bm.getBeans(name).iterator().next();
CreationalContext ctx = bm.createCreationalContext(bean);
return bm.getReference(bean, bean.getClass(), ctx);
}
@PrePersist
@PreUpdate
public void onPreInsertOrUpdate(MyEntity entity) {
User loggedInUser = (User) getBeanByName("loggedInUser");
entity.setUpdatedUser(loggedInUser);
entity.setUpdatedTimestamp(new Date());
}
}
사용자가 세션 범위에서 관리됩니다. 성능 처리량? 엔티티를 자체 범위에서 동시에 업데이트하는 로그인 한 여러 사용자가있는 경우 어떻게됩니까?
최대 절전 모드 JPA 2.0
심 용접 CDI
글래스 피시 3.1.2