我正在开发一个具有域类(用户,步骤,答案)的java-spring项目。请逐步解答问题的答案。每一步都有自己的文字和图像。一个答案可能是几个步骤。特定用户已回答了一个问题。回答每个单独存储在数据库中的内容,也可以编辑或从db中删除。这个例子的最佳实现,它怎么可能?
public class Step{
private int step_no;
private String text;
private byte[] image;
//setter and getter
}
public class Answer{
private int id;
private question_id;
private String user;
private List<Step> steps;
//setter and getter
}
答案 0 :(得分:0)
您将需要使用对象关系映射工具,例如JPA,Hibernate,或者更合适的是Spring Data。这些工具允许您直接将表和列映射到实体和属性中。
ORM适用于java注释或xml配置。对于初学者,我建议你使用注释。
映射这些类的最佳方法是让用户保存他已完成的所有答案的列表,同时,答案将包含属于它的所有步骤的列表。让我向您展示一个如何完成它的快速示例。
用户:
@Entity
@Table(name = "<name in db>")
public class User {
@Id
private Integer userId;
@Column(name = "<column name in db>")
private String firstName;
@Column(name = "<column name in db>")
private String lastName;
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Answer> answers;
/* getters and setters */
}
答案:
@Entity
@Table(name = "<name in db>")
public class Answer {
@Id
private Integer answerId;
@ManyToOne(fetch = FetchType.EAGER)
private User user;
@OneToMany(mappedBy = "answer", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Step> steps;
/* getters and setters */
}
步骤:
@Entity
@Table(name = "<name in db>")
public class Step {
@Id
private Integer stepId;
@ManyToOne(fetch = FetchType.EAGER)
private Answer answer;
@Column(name = "<column name in db>")
private Object image;
@Column(name = "<column name in db>")
private String text;
/* getters and setters */
}
您始终可以使用简单的JDBC而不是强大的ORM工具来创建数据库查询,但绝对建议您查看javax.persistence。*包并从那里开始。