我有扩展“GenericDAO”的 DAO 类
通用 dao 具有带有 getter 和 setter 的 LanguageId 变量。
我从会话中获得了我的语言 ID。
有什么方法可以直接设置我的语言 ID genericDAO
。这样每次我使用 dao 类时,我都不必从控制器传递 languageId 吗?
最后我想要的是,我应该能够getLanguageId()
在我的 dao 对象中。
通常 DAO 被设置为单例,因此所有不同的线程只使用一个实例。如果是这种情况,那么您不能为一个用户设置语言而不影响其他用户,并且将其作为方法参数传递是确保其他线程不会无意中获取错误语言 ID 的唯一安全方法. 所以你是否能做你想做的事取决于你的 DAO 有什么范围。
DAO 的关键在于它们是无状态的,而会话代表一些有状态的信息。所有有状态的信息都应该通过方法的参数传递给 DAO。
所以,如果你仍然想在 DAO 中拥有 getLanguageId(),那么你注定要为每个会话创建 DAO 实例,并在创建过程中将 languageId 注入其中。