Я работаю над приложением для управления студентами, меня смущает то, как сопоставлять разные типы пользователей, которые есть в моей базе данных, с классами на Java с использованием наследования.У меня есть таблицы "Пользователь", "Ученик" и "Учитель" следующим образом:
Я создал абстрактный класс Пользователь:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "user")
public abstract class User {
@Id
private int id;
private String fname;
private String lname;
private String email;
private String password;
private String address;
private String phone;
private String userType;
private boolean isAdmin;
public User(String fname, String lname, String email, String password, String address, String phone,
String userType, boolean isAdmin) {
//super();
this.fname = fname;
this.lname = lname;
this.email = email;
this.password = password;
this.address = address;
this.phone = phone;
this.userType = userType;
this.isAdmin = isAdmin;
}
Дочерний класс Ученик:
@Entity
@Table(name = "student")
public class Student extends User {
@Id
@Column(name = "user_id")
private int id;
private int grade;
public Student(int id, String fname, String lname, String email, String password, String address, String phone,
String userType, int grade, boolean isAdmin)
{
super(fname, lname, email, password, address, phone, userType, isAdmin);
this.grade=grade;
this.id = id;
}
Класс «Учитель» аналогичен «Ученику».
Я застрял на том, как на самом деле моделироватьотношения, использующие спящий режим для создания, чтения, обновления или удаления студентов из базы данных.
До сих пор я пробовал этот метод в классе StudentDAO, но он не работает, и я действительно не уверен, если мойс моделированием все в порядке:
@Transactional
public void listStudent( int id ){
Student myStudent =null;
Configuration con = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(Student.class);
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
myStudent = (Student)session.get(Student.class, id);
System.out.println(myStudent);
Я запутался в том, как использовать отношения «один ко многим», так как считаю это наследством.
Как мне смоделировать это наилучшим образом и как я могу использовать hibernate, чтобы просто использовать эти основные операции с базой данных?