在java中使用hibernate,我们是否需要将所有java pojo字段映射到Database表列?或者我们只能映射少数列的几个字段?
答案 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