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