是否存在与QSqlTableModel等效的Java ORM?

时间:2013-10-26 12:24:29

标签: java orm

我目前正在开发一个Java项目,只是想知道JAVA中是否存在类似自动对象关系映射(ORM)的东西。

在C ++中,我使用了QSqlTableModel

 QSqlTableModel *model = new QSqlTableModel(parentObject, database);
 model->setTable("Table_I_wanna_access");
 model->select();

在这三行后,我可以通过模型对象访问Table_I_wanna_access。 (这意味着我可以访问数据,更改数据,插入,.....)

所以我的问题是: JAVA中有类似的东西吗? 或者我是否必须为数据库中的每个表编写自己的ORM类?

1 个答案:

答案 0 :(得分:1)

我不熟悉QSqlTableModel,但Java的常见ORM是Hibernate

现在使用注释执行ORM映射,例如:

@Entity
@Table (name="emp")
class Employee
{
    @Id
    @GeneratedValue
    @Column(name="EMP_ID")
    public long getId() {
        return id;
    }

    @Column(name="SURNAME", nullable=false)
    public String getName() {
        return name;
    }

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name="EMP_ID")   // Column name on the Role table
    public List<Role> getRoles() {
        return tasks;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="DEPT_ID")
    public Department getDepartment() {
        return department;
    }

 }

在上面的示例中,类和角色和部门也将使用其信息进行注释。注释涵盖了类如何映射到数据库表的所有方面(包括继承结构,级联行为等)。

这些注释中的一些现已成为名为JPA的Java标准,因此您应该能够编写代码并使用任何符合ORM的代码运行。另一个浮现在脑海中的是iBatis(但我只使用过Hibernate)。