是否存在与QSqlTableModel等效的Java ORM?
我目前正在从事一个Java项目,只是想知道Java中是否有类似自动对象关系映射(ORM)的东西 在C++中,我使用了<代码> qSqtLabLimoDele>代码>:是否存在与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(); 在这三行之后,我可以通过模型对象访问表。 (这意味着我可以访问数据、
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创建一个新数据库,然后加载引用数据。