hibernate使用Session对数据库进行增删改查,我们一般会定义一个 POJO实体类,然后通过类似下面的代码,操作实体。
Session session = sessionFactory.openSession();
Student stu = (Student)session.get(Student.class, 1);
Session session = sessionFactory.openSession();
Student stu = (Student)session.get("net.aty.Student", 1);
什么是动态实体呢?hibernate的manual上写道:
Persistent entities do not necessarily have to be represented as POJO classes or as JavaBean objects at runtime.
Hibernate also supports dynamic models (using Maps of Maps at runtime).
With this approach, you do not write persistent classes, only mapping files.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class entity-name="aty_dynamic_model">
<id name="id" type="long" column="ID">
<generator class="native" />
</id>
<property name="name" column="NAME" type="string" />
<property name="address" column="ADDRESS" type="string" />
</class>
</hibernate-mapping>
Session session = sessionFactory.openSession();
session.beginTransaction();
Map<String, String> record = new HashMap<String, String>();
record.put("name", "aty");
record.put("address", "shenzhen");
session.save("aty_dynamic_model", record);
session.getTransaction().commit();
session.close();