我对Hibernate还是陌生的。我正在尝试使用以下示例了解会话和事务。 我有一个活动管理系统。我有一个称为事件的实体,用户可以编辑事件。 我应该将会话另存为服务类中的实例变量,并使用它来执行多个 交易方式不同?我也想将其用作缓存。 会话对象应该存储在哪里?或者如何最好地实现我想要做的事情 下面-我有两个事务-首先将其提取为事件对象,其次需要对其进行编辑并将其保存到 数据库。
ServiceClass {
Session session ;
Constructor () {
session = sessionFactory.getSession();
}
//First transaction
public Event getEvent() {
begin new Transaction on session.
Fetch new Event object
End new transacton
return event; //to display to user
}
//Second transaction
public void editEvent(String newName, Date newDate) {
begin Transaction
Obtain the Event object from the session which was result of First transaction above
event.setName(newName); //This should be in persistent state and affect the database
event.setDate(newDate);
end Transaction
}
}
非常感谢您:)
答案 0 :(得分:1)
您需要考虑会话事务。如果您的ServiceClass在多线程环境(例如Servlet)中使用,则在字段中指定它会导致线程问题。为避免此问题,请将会话创建置于editEvent()方法中,该方法应: