我正在制作structured interviewing应用。
在高级别我的DataModal看起来像:
interface State {
dependencies: { [key: number]: Dependency},
dependencyIds: number[];
}
interface Dependency {
id: number,
name: string,
type: "basic" | "complex"
}
我正在使用Hibernate / JPA和MS Sql。这里的问题是
我想要一套针对技术和非技术问题的不同的读/写/更新/删除权限。就像只有开发人员才允许对技术问题进行写访问,只允许HR访问NonTech问题等。是否可以使用上面的数据模式实现这一点,或者我应该将技术和非技术问题保存在两个不同的数据库中?
Hibernate是正确的选择还是我应该使用Mybatis?
这里的潜在客户表示赞赏!
谢谢!
答案 0 :(得分:1)
首先,您需要区分应用程序工作流程与权限。通常,权限侧重于允许对资源的不同类型的访问(例如,"组x的成员已经读取但不写入,对文件y"的权限)。权限通常在应用程序本身之外进行管理。
另一方面,工作流表示"向x类型的用户显示应用程序的以下视图,y类型的用户显示不同的视图" - 例如,Stack Overflow向具有高声誉的用户显示不同的工具集。这是基于权限,但通常它会在"申请。
我不知道你的正确答案,但在决定任何特定的框架之前我会考虑这个问题。
回答你的第一个问题:
是否可以使用上面的数据模式或我应该实现这一点 将技术和非技术问题保存在两个不同的数据库中?
不,您的数据模型不完整。它没有显示您如何为用户建模 - 您的应用程序如何知道登录的用户类型?绝对没有理由将不同类型的问题存储在不同的数据库中 - 使用数据库级权限来强制执行应用程序级安全性并不常见。
Hibernate是正确的选择还是我应该使用Mybatis?
选择与您描述的问题无关。