我目前正在开发一个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类?
答案 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)。