如何在java持久性中完成注释映射?

时间:2010-12-10 02:02:26

标签: java hibernate jpa annotations

我们使用注释将实体类与数据库表映射,只需指定@Entity,更像@Id,表连接和许多东西。我不知道这些实体变量是如何与数据库表进行映射的。任何人都可以给出简短的理解说明。

谢谢:)

4 个答案:

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