我们可以使用hibernate只使用java pojo映射几个表列

时间:2014-01-09 11:29:49

标签: java hibernate pojo

在java中使用hibernate,我们是否需要将所有java pojo字段映射到Database表列?或者我们只能映射少数列的几个字段?

4 个答案:

答案 0 :(得分:10)

是的,您可以将Pojo类的几个字段映射到表格列。不是问题。它将成功将数据存储在DB中。

示例:

以下是StudentData Pojo

public class StudentData1 {
    private String name;
    private int id;
    private String name1;
    //setters & getters
}

和HBM文件:

<class name="example.StudentData" table="StudentData"> 
    <id name="id" column="pid"  >
        <generator class="assigned" />
    </id> 
    <property name="name" column="pname" /> 
</class>

CFG文件是

<mapping resource="StudentData.hbm.xml"/>

主要类是

 public static void main(String[] args) {
    SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
    Session session = factory.openSession();
    StudentData1 s = new StudentData1();
    s.setId(1);
    s.setName("iPhone");
    Transaction tx = session.beginTransaction();
    session.save(s);
    System.out.println("Object saved successfully.....!!");
    tx.commit();
    session.close();
    factory.close();
}

您可以运行此代码,只执行并存储两个字段。

答案 1 :(得分:4)

我假设你只想在数据库中只保留一个类的字段的子集。 你可以使用@Transient  标记以标记您不希望保留的字段。

警告:请确保不要初始化这些字段(因为加载时数据库中没有值)

答案 2 :(得分:1)

我没有检查它,但我不明白为什么你不能留下一些未映射的字段,特别是如果它们不作为表中的列存在。 当然,在某些情况下,您需要将列映射到字段,例如当列不能为空时,在保存期间您将获得异常。

答案 3 :(得分:1)

在休眠状态下,如果没有以任何其他方式描述,将映射所有字段。因此,可以指向ORM映射器不使用

将给定字段映射到DB
 [@Transient][1] annotation in case JPA is used
 or even the **transient** keyword from java - careful when using this one, it will prevent the given field to be serialized