我们使用注释将实体类与数据库表映射,只需指定@Entity
,更像@Id
,表连接和许多东西。我不知道这些实体变量是如何与数据库表进行映射的。任何人都可以给出简短的理解说明。
谢谢:)
答案 0 :(得分:3)
好主意是将对象及其与其他对象的连接转换为关系数据库。这两种表示数据的方式(由类和数据库中的表定义的对象)不是直接兼容的,这就是所谓的Object Relational Mapper框架发挥作用的地方。 所以像
这样的课程class MyObject
{
private String name;
private int age;
private String password;
// Getters and setters
}
将转换为包含列名的数据库表,列名为varchar,age类型为int,密码类型为varchar。
Java中的注释只是向类定义添加附加信息(所谓的元数据),任何其他类(例如JavaDoc)都可以读取这些信息,并且在Java Persistence API的情况下,ORM将使用它们像Hibernate这样的框架,用于读取将对象转换为数据库所需的其他信息(您的数据库表需要一个主要ID和一些信息 - 比如对象与另一个对象的关系类型 - 不能通过查看来自动确定你的班级定义)。
答案 1 :(得分:0)
答案 2 :(得分:0)
注释只是一个类的元数据,没什么神奇之处。您可以编写自己的注释。这些注释被赋予运行时的保留策略(这意味着您可以在运行时访问该元数据)。当您调用persist等时,持久性提供程序会遍历您的类中的字段(java.lang.reflect.Field)并检查存在哪些注释以构建您的SQL语句。尝试编写自己的注释并使用它做一些事情。之后它似乎不会很神奇。
答案 3 :(得分:0)
在你的情况下,注释工作意味着使用带有实体类的tablename进行映射看起来像....
@Entity
@Table(name = "CompanyUser")
public class CompanyUserCAB implements java.io.Serializable
{
private long companyUserID;
private int companyID;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "companyUserID")
public long getCompanyUserID()
{
return this.companyUserID;
}
public void setCompanyUserID(long companyUserID)
{
this.companyUserID = companyUserID;
}
@Column(name = "companyID")
public int getCompanyID()
{
return this.companyID;
}
public void setCompanyID(int companyID)
{
this.companyID = companyID;
}
}