使用具有save(this)方法的Child类扩展@Entity Annotated类

时间:2014-01-16 11:53:59

标签: java database hibernate persistence

我不知道Hibernate是否可以通过这种方式实现..........例如,我有以下类............

@Entity
public class Employee implements Serializable{

  private String name;
  private int age;
  private String gender;
  ........
  ........Getters and setters also
}

我可以像这样扩展这个类,以便在数据库中保存一个雇员对象

public class EmployeeDataObject extends Employee{
  public boolean save()
  {
       SessionFactory sessionFac = NewHibernateUtil.getSessionFactory();
    Session session = sessionFac.openSession();
    try {
        session.beginTransaction();
        session.save(this);
        session.getTransaction().commit();
        session.close();
        return true;
    } catch (Exception ex) {
        ex.printStackTrace();
        session.getTransaction().rollback();
        session.close();
        return false;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

我认为它可以在技术上完成。看起来你想实现某种Active Record。我认为一个好的,符合JPA标准的Active Record实现会非常棒。

有几个项目试图实现这一目标。您可能想看看其中一些:

  • hiverecord - 它采用不同的继承方法(实体派生自类似DAO的抽象类)。但是,可用的实现非常基础,项目看起来已经放弃了。

  • ActiveJDBC - 更完整的Active Record实现,但完全不符合JPA标准。

ruby implementation相比,我不确定你能想到多远。 Java的静态类型和编译时泛型可能会很快就会以你的方式出现,但是速度很快:)