gpt4 book ai didi

java - 我应该保留什么范围

转载 作者:行者123 更新时间:2023-12-01 15:01:17 25 4
gpt4 key购买 nike

我正在使用 JSF 2.0 和 MySQL 创建新网站。以下是我所拥有的。

注意 在每个表中,我仅考虑 1-2 个字段,仅供说明之用。实际上,根据需求,我会有很多字段。

我有 n 名申请人。

ApplicantDataTable
+++++++++++++++++++
appId PK
appName
+++++++++++++++++++

每个申请人都会有很多项目。

ProjectDataTable
+++++++++++++++++++
proId PK
proName
appId FK
+++++++++++++++++++

每个项目都会有许多阶段,对于每个阶段我都需要输入数据。

stage1datatable
+++++++++++++++++++
stg001id PK
proId FK
stg001name
+++++++++++++++++++

stage2datatable
+++++++++++++++++++
stg002id PK
proId FK
stg002name
+++++++++++++++++++

在申请人屏幕中,我将显示申请人列表。单击此按钮后,我将获得该申请人的项目列表。单击该按钮后,我将看到第 1 阶段屏幕,在第 1 阶段屏幕中,底部我将有第 2、3、4 阶段等的链接。

我发现我必须在所有阶段都使用 ProjectId 和 appId,所以我不确定是否应该在 session 范围内保留包含 projectId 和 appId 的 bean?有人可以建议我如何在 Java 中构建 bean 吗?

任何建议都会很棒。

最佳答案

理想情况下, session 范围适用于您的用例,即将两个 id 都存储在 session 范围内,但实际上,这可能有点过头了。如果两个 id 都将被处理(因此可在范围内重新存储),您可以将它们保留在 flash scope 中。 。在每个目标页面上,您都可以访问这些 ID,如果您在下一个请求中需要它们,只需将它们重新存储在相同的范围内即可。这样就不会造成浪费。使用 putNow() 方法保证变量在请求完成后可用。

与您的问题无关,我忍不住注意到您的数据模型中的一些问题

  1. 为什么要在两个表中重复 appName 变量?看起来像是一些不必要的非规范化

  2. 为每个项目阶段创建一个表将在不久的将来带来问题。除非您绝对确定您的项目阶段永远不会超过 2 或 3 个,否则我强烈建议您将所有项目阶段合并到一个表中,然后将 project_stage_id 添加为该表中的字段 table 。使用唯一键约束和触发器的组合来确保不会发生重复,并且每个项目的项目阶段 ID 是连续的(如果这是要求)

关于java - 我应该保留什么范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com