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

是否存在与QSqlTableModel等效的Java ORM?,java,orm,Java,Orm,我目前正在从事一个Java项目,只是想知道Java中是否有类似自动对象关系映射(ORM)的东西 在C++中,我使用了 qSqtLabLimoDele>代码>: QSqlTableModel *model = new QSqlTableModel(parentObject, database); model->setTable("Table_I_wanna_access"); model->select(); 在这三行之后,我可以通过模型对象访问表。 (这意味着我可以访问数据、

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

在C++中,我使用了<代码> qSqtLabLimoDele>代码>:

 QSqlTableModel *model = new QSqlTableModel(parentObject, database);
 model->setTable("Table_I_wanna_access");
 model->select();
在这三行之后,我可以通过模型对象访问表。 (这意味着我可以访问数据、更改数据、插入…)

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

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

现在的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;
    }

 }
@实体
@表(name=“emp”)
班级员工
{
@身份证
@生成值
@列(name=“EMP\u ID”)
公共长getId(){
返回id;
}
@列(name=“姓氏”,null=false)
公共字符串getName(){
返回名称;
}
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name=“EMP\u ID”)//角色表上的列名
公共列表getRoles(){
返回任务;
}
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“DEPT\u ID”)
公共部门{
退货部;
}
}
在上面的例子中,类的角色和部门也将用它们的信息进行注释。注释涵盖了类如何映射到数据库表的所有方面(包括继承结构、级联行为等)


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

我就是这么想的。因此,我必须自己编写一个数据库(DB)表模型对象。每次DB表改变时,我都要改变代码。很多工作都是徒劳的。我想我将首先尝试一下QtforJava(Jambi)(比如JbossTools for eclipse或。但是如果您正在与数据库一起开发一个系统,那么您最好从java模型生成数据库,而不是相反,因为java模型总是比仅从数据库原理图推断的内容更丰富——例如,对于一个反向工程来说让一个构建脚本删除现有数据库,从POJO创建一个新数据库,然后加载引用数据。