DAO 接口:2 个实体的实现(Java,Hibernate)
DAO interface: Implementation for 2 entities (Java, Hibernate)
我有 2 个实体学生和讲师。我想为两个实体实现 Dao 接口和 Dao 实现。我将一个 class 用户设置为 parent 的学生和讲师:
@MappedSuperclass
public abstract class User {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name = "name")
private String firstName;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
getters and setters ...
}
和children。学生
@Entity
@Table(name = "student", schema="els")
public class Student extends User {
@Column(name="achiev")
private String achievment;
public Student() {
}
getter and setter for achievment
}
和讲师
@Entity
@Table(name = "instructor", schema="els")
public class Instructor extends User {
@Column(name = "reputation")
private int reputation;
public Instructor() {
}
public int getReputation() {
return reputation;
}
public void setReputation(int reputation) {
this.reputation = reputation;
}
}
道接口:
public interface DAO {
List<User> getAllUsers();
...
}
两个实体的 DAO 实现。
但是有个问题。我无法保存每个实体的所有属性,因为在用户 class 中我只有其中一些。 Student 和 Instructor 除了继承属性外还有自己的属性。
如何实现DAO和实体。在这种情况下什么是好的做法?
谢谢
您可以尝试使用泛型。
public interface GenericDAO<T> {
List<T> getAll();
}
并且在需要的时候,可以对具体的功能进行扩展和定义。
public interface UserDAO extends GenericDAO<User> {
User getAllWithAvatar();
}
希望对您有所帮助!
我有 2 个实体学生和讲师。我想为两个实体实现 Dao 接口和 Dao 实现。我将一个 class 用户设置为 parent 的学生和讲师:
@MappedSuperclass
public abstract class User {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name = "name")
private String firstName;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
getters and setters ...
}
和children。学生
@Entity
@Table(name = "student", schema="els")
public class Student extends User {
@Column(name="achiev")
private String achievment;
public Student() {
}
getter and setter for achievment
}
和讲师
@Entity
@Table(name = "instructor", schema="els")
public class Instructor extends User {
@Column(name = "reputation")
private int reputation;
public Instructor() {
}
public int getReputation() {
return reputation;
}
public void setReputation(int reputation) {
this.reputation = reputation;
}
}
道接口:
public interface DAO {
List<User> getAllUsers();
...
}
两个实体的 DAO 实现。
但是有个问题。我无法保存每个实体的所有属性,因为在用户 class 中我只有其中一些。 Student 和 Instructor 除了继承属性外还有自己的属性。
如何实现DAO和实体。在这种情况下什么是好的做法?
谢谢
您可以尝试使用泛型。
public interface GenericDAO<T> {
List<T> getAll();
}
并且在需要的时候,可以对具体的功能进行扩展和定义。
public interface UserDAO extends GenericDAO<User> {
User getAllWithAvatar();
}
希望对您有所帮助!