Java 如何改进这种模式/抽象?
我正在为在线考试模块制作一个webapp,我想知道如何改进我目前的设计和抽象。考试是多项选择题 到目前为止,我的数据库中有三个表: 1.考试Java 如何改进这种模式/抽象?,java,hibernate,jpa,schema,persistence,Java,Hibernate,Jpa,Schema,Persistence,我正在为在线考试模块制作一个webapp,我想知道如何改进我目前的设计和抽象。考试是多项选择题 到目前为止,我的数据库中有三个表: 1.考试 考试id(初级,汽车公司) 考试名称-示例:“物理”等 数量问题 每个问题的时间 每个问题的分数 2.问题 问题id-主键,auto_公司 检查id-FK引用检查下的检查id,在更新和删除时-级联 问题文本-实际问题本身 问题\图-如果问题带有 图片(例如:graph.jpg)。可以为空 问题(u)类别 问题\名称-唯一,varchar,用于识别问题
- 考试id(初级,汽车公司)
- 考试名称-示例:“物理”等
- 数量问题
- 每个问题的时间
- 每个问题的分数
- 问题id-主键,auto_公司
- 检查id-FK引用检查下的检查id,在更新和删除时-级联
- 问题文本-实际问题本身
- 问题\图-如果问题带有 图片(例如:graph.jpg)。可以为空
- 问题(u)类别
- 问题\名称-唯一,varchar,用于识别问题的内容(我计划使用此字段,因此我有一个参考来添加答案选项,但感觉没有必要)
- 答案id-PK,汽车公司
- 问题id-引用问题id的外键。更新/删除时级联
- 答覆全文
- answer_correct-微小的整数表示答案是否正确
- 答案名称-唯一,varchar,答案的引用,与问题名称相同
public class Exam
{
private int Id;
private String name;
private int timePerQuestionInSeconds;
private int pointsPerQuestion;
private int numberOfQuestions;
private ArrayList<Question> questionList;
}
public class Question
{
private int Id;
private int examID;
private String text;
private String figure;
private String category;
private String name;
private ArrayList<Answer> answers;
}
public class Answer
{
private int id;
private int questionId;
private String text;
private boolean correct;
private String name;
}
公开课考试
{
私有int-Id;
私有字符串名称;
私人时间间隔;
私人int点问题;
私人问题;
私人ArrayList问题列表;
}
公开课问题
{
私有int-Id;
私立国际考试中心;
私有字符串文本;
私有字符串数字;
私有字符串类别;
私有字符串名称;
私人ArrayList回答;
}
公开课答案
{
私有int-id;
私人智力测验;
私有字符串文本;
私有布尔正确;
私有字符串名称;
}
所以,要参加考试,我必须从考试中选择ByExamName,然后从问题中选择ByExamId,然后从答案中选择ByQuestionID。然后将这些结果集映射到对象
相反,如果我使用JPA来持久化这些实体,是否可以持久化实体的ArrayList?我的课堂考试对吗
@OneToMany(targetEntity=Question.class,mappedBy=“examID”)
私人律师事务所(问题)
在课堂上,我应该问一个问题
@许多酮
私人考试
要设置所需的关系?顺便说一句,我使用的是JavaSE,所以我不确定我是否拥有JavaEE对bean的所有支持
我还需要一些方法来存储学生的考试成绩。我在考虑一个表分数,它有fk到student id,我可以按student id查询该表以返回学生的分数。来自JPA,对于您编写的每个类,如果可能的话,您应该使用接口而不是具体的类来声明bean变量。使用java.util.List而不是java.util.ArrayList 关于考试表中的num_question属性,这是否必要?计算问题表中的行不是很准确吗 此外,每个问题的分数取决于考试还是问题?(我认为这是基于一个问题)。如果是这样的话,那么它应该是问题表的一个属性,可能还包括时间每问题属性。(困难或更长的问题是否允许更多的时间?)这一切都基于您的原始要求 否则,我觉得没问题