pojo类和数据库的映射文件*.hbm.xml(持久化实体类)
一个mapping映射文件里可以写多个类(class),最好一个类写一个映射;
1:<hibernate-mapping>
代表映射文件,以下是属性:
---schema:用来指定所映射的数据库schema的名称。若指定该属性,则表明会自动添加该schema 前缀(schema:每个数据库中有很多房间存储东西,每个房间就是schema)
---catalog:用来指定所映射的数据库的名称
---auto-import:指定是否可以在查询语言中使用非限定的类名(默认为true,仅限于本映射文件中的类)(非限定的类名:类名,不带包;反之限定就是带包的)
---重要package:指定的是此映射类名(不是当前映射文件)之前的包的前缀,如果class里是非限定类名(只是一个类名),那mapping里就得加这个,作为包名,如果class等于全限定名(就是带包的),那就这里不需要,如果多个class在同一包下,且写在同一mapping里,那可以所有class不写全限定名直接在mapping里加package;
eg1:
//com是包名,om底下是CampusPO,写的就是PO的映射(给哪个类做映射都行,只要是实体类,想要持久化的类就行)
<hibernate-mapping package="com.sudytech.cdsq.impl.rich.local.om">
<class name="CampusPO" table="t_cdsq_campus">
eg2:
<hibernate-mapping >
<class name="com.sudytech.cdsq.impl.rich.local.om.CampusPO" table="t_cdsq_campus">
eg3:
<hibernate-mapping >
<class name="com.sudytech.cdsq.impl.rich.local.om.CampusPO" table="t_cdsq_campus">
<class name=" com.sudytech.cdsq.impl.rich.local.om. CampusPO1" table="t_cdsq_campus1">\</hibernate-mapping >
eg4:
<hibernate-mapping package="com.sudytech.cdsq.impl.rich.local.om">
<class name="CampusPO" table="t_cdsq_campus">
<class name="CampusPO1" table="t_cdsq_campus1"></hibernate-mapping >
2:<class>
当前要映射的类
---name:指定映射的持久化类的类名
---table:相对应数据库的表名
---dynamic-insert:设置为true,表示当保存一个对象时,会动态生成insert语句,insert语句中仅包含所有取值不为null的字段,默认值为false;
---dynamic-update:设置为true,表示当跟新一个对象时,会动态生成update语句,update语句中仅包含所有取值需要跟新的字段,默认值为false;
---select-before-update:设置hibernate在更新某个持久化对象之前是否需要先执行
一次查询,默认值为false
---batch-size:指定 根据OID来抓取实例时每批抓取的实例数
---lazy:是否使用延迟加载,false=立即,默认为true;
---mutable:若设置为true,等价于所有的<property>元素的update属性为false,表示整个实例的不能被更新,默认为true;
--- discriminator-value:指定区分不同子类的值,当使用<subclass/>来定义持久化类的继承关系时需要使用该属性