0

我目前正在从事一个 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 类?

4

1 回答 1

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;
    }

 }

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

其中一些注解现在已成为称为 JPA 的 Java 标准,因此您应该能够编写代码并使用任何符合要求的 ORM 运行。另一个想到的是 iBatis(但我只使用过 Hibernate)。

于 2013-10-26T14:13:54.560 回答