我们是否可以使用休眠仅使用 java pojo 映射几个表列



使用 java 休眠,我们是否需要将所有 java pojo 字段映射到数据库表列?或者我们可以只映射几个字段和几列吗?

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

例:

以下是学生数据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();
}

你可以运行这个代码它,将只执行和存储两个字段。

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

警告:确保尊重这些字段可能未初始化(因为在加载时数据库中没有它们的值)

在休眠中,如果未以任何其他方式描述,则将映射所有字段。因此,可以指向ORM映射器,而不是通过使用

 [@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 
我没有

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

最新更新