hibernate映射文件
2012-03-22 16:00
134 查看
一. 枚举映射:
<type name="org.hibernate.type.EnumType">
<param name="enumClass">com.cn.Gender</param>
<param name="type">12</param> 12则以String类型显示
</type>
二. 联合主键映射:
<hibernate-mapping package="com.cn"><!-- 联合主键的映射用composite-id来写 -->
<class name="Person">
<composite-id name="unitedKey">
<key-property name="firstName" column="first_name" length="12"/>
<key-property name="lastName" column="last_name" length="12"/>
</composite-id>
<property name="ss" length="12"/>
</class>
</hibernate-mapping>
三. 子类继承父类:
public class Employee {
private int id;
private String name;
get和set方法......
}
public class Seller extends Employee {
private String sell;
get和set方法......
}
public class Skiller extends Employee {
private String skill;
get和set方法......
}
子类继承父类的配置文件中有三种写法:
1. 子类和父类映射全部映射到一张表上,利用鉴别器来区分是哪个子类。在子类属性中会出现空属性(这些属性是其他子类上的)。
sql语句执行效率高(因为执行的sql是在同一张表上),但是映射有点乱,且子类会出现空的属性。
<hibernate-mapping package="com.cn1">
<class name="Employee" discriminator-value="0">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<discriminator column="type" type="String"/>
<subclass name="Seller" discriminator-value="1">
<property name="sell"/>
</subclass>
<subclass name="Skiller" discriminator-value="2">
<property name="skill"/>
</subclass>
</class>
</hibernate-mapping>
2.子类单独映射到各自的一张表中,然后利用joined-subclass连接起来。sql语句执行效率低,但是各表映射清晰。
这些生成的映射到的表可以看做像是多对多管系统生成的中间表那样。
<hibernate-mapping package="com.cn2">
<class name="Employee">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<joined-subclass name="Seller" table="seller">
<key column="emp_id"/>
<property name="sell"/>
</joined-subclass>
<joined-subclass name="Skiller" table="skiller">
<key column="emp_id"/>
<property name="skill"/>
</joined-subclass>
</class>
</hibernate-mapping>
3.适用情况:某一子类和父类映射到同一张表,另外的子类和父类映射的不是同一张表。
本例中Seller和父类映射在一起,Skiller在自己单独的映射表中
结合了第一种和第二种继承映射的优点。执行较快,结构换算清晰。
<hibernate-mapping package="com.cn3">
<class name="Employee" discriminator-value="0">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<discriminator column="type" type="String"/>
<subclass name="Seller" discriminator-value="1">
<property name="sell"/>
</subclass>
<subclass name="Skiller">
<join table="skiller">
<key column="emp_id">
<property name="skill"/>
</join>
</subclass>
</class>
</hibernate-mapping>
hibernate配置文件中schema的值对应oracle的用户名
catalog的值指定后会改变原数据库中的表名,成为:原有表名+catalog的值
hibernate中集合类型:
1.set:
<set name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
</set>
2.list:
<list name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
<list-indexcolumn="order_id"/>
</list>
or
<bag name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
</bag>
3.map:
<map name="emps">
<keycolumn="depart_id"/>
<map-keytype="String" class="name"/>
<one-to-manyclass="Employee"/>
</map>
4.数组集合:
hibernate中inverse:
hibernate 中关系维护中默认由多的一方维护关系(inverse=”false”),一得一方不维护(inverse=”true”)。这样减少了update语句也就减少了垃圾sql执行代码,提高了性能。
hibernate配置文件中hibernate.hbm2ddl.auto的值:
create: 先drop表再create (默认)
create-drop:也表示创建,不过在系统关闭之前执行一下drop;
update: 加载hibernate时自动更新数据库结构
validate: 加载hibernate时候自动检查数据库表结构是否发生改变,如果改变就抛出异常,不会更新。
hibernate配置中cascade的值:
none:对任何关系不进行级联(默认)
all: 对所有关系进行级联(即:save-update和delete)
save-update: 在进行save和update操作时进行级联
delete:在进行delete时进行级联
all-delete-orphan:当一个对象在关系图中成为孤儿时,删除该节点
lazy的值:
proxy:使用代理(3.0之后有的,默认)
true:是用懒加载
false:不使用懒加载
fetch(什么方式抓取数据)的值:
select:对相关的每张表进行select查询(默认)
join:采用连接表的方式一次性查询,效率较高
<type name="org.hibernate.type.EnumType">
<param name="enumClass">com.cn.Gender</param>
<param name="type">12</param> 12则以String类型显示
</type>
二. 联合主键映射:
<hibernate-mapping package="com.cn"><!-- 联合主键的映射用composite-id来写 -->
<class name="Person">
<composite-id name="unitedKey">
<key-property name="firstName" column="first_name" length="12"/>
<key-property name="lastName" column="last_name" length="12"/>
</composite-id>
<property name="ss" length="12"/>
</class>
</hibernate-mapping>
三. 子类继承父类:
public class Employee {
private int id;
private String name;
get和set方法......
}
public class Seller extends Employee {
private String sell;
get和set方法......
}
public class Skiller extends Employee {
private String skill;
get和set方法......
}
子类继承父类的配置文件中有三种写法:
1. 子类和父类映射全部映射到一张表上,利用鉴别器来区分是哪个子类。在子类属性中会出现空属性(这些属性是其他子类上的)。
sql语句执行效率高(因为执行的sql是在同一张表上),但是映射有点乱,且子类会出现空的属性。
<hibernate-mapping package="com.cn1">
<class name="Employee" discriminator-value="0">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<discriminator column="type" type="String"/>
<subclass name="Seller" discriminator-value="1">
<property name="sell"/>
</subclass>
<subclass name="Skiller" discriminator-value="2">
<property name="skill"/>
</subclass>
</class>
</hibernate-mapping>
2.子类单独映射到各自的一张表中,然后利用joined-subclass连接起来。sql语句执行效率低,但是各表映射清晰。
这些生成的映射到的表可以看做像是多对多管系统生成的中间表那样。
<hibernate-mapping package="com.cn2">
<class name="Employee">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<joined-subclass name="Seller" table="seller">
<key column="emp_id"/>
<property name="sell"/>
</joined-subclass>
<joined-subclass name="Skiller" table="skiller">
<key column="emp_id"/>
<property name="skill"/>
</joined-subclass>
</class>
</hibernate-mapping>
3.适用情况:某一子类和父类映射到同一张表,另外的子类和父类映射的不是同一张表。
本例中Seller和父类映射在一起,Skiller在自己单独的映射表中
结合了第一种和第二种继承映射的优点。执行较快,结构换算清晰。
<hibernate-mapping package="com.cn3">
<class name="Employee" discriminator-value="0">
<id name="id">
<generator class="native" />
</id>
<properties name="name" unique="true"/>
<discriminator column="type" type="String"/>
<subclass name="Seller" discriminator-value="1">
<property name="sell"/>
</subclass>
<subclass name="Skiller">
<join table="skiller">
<key column="emp_id">
<property name="skill"/>
</join>
</subclass>
</class>
</hibernate-mapping>
hibernate配置文件中schema的值对应oracle的用户名
catalog的值指定后会改变原数据库中的表名,成为:原有表名+catalog的值
hibernate中集合类型:
1.set:
<set name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
</set>
2.list:
<list name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
<list-indexcolumn="order_id"/>
</list>
or
<bag name="emps">
<keycolumn="depart_id"/>
<one-to-manyclass="Employee"/>
</bag>
3.map:
<map name="emps">
<keycolumn="depart_id"/>
<map-keytype="String" class="name"/>
<one-to-manyclass="Employee"/>
</map>
4.数组集合:
hibernate中inverse:
hibernate 中关系维护中默认由多的一方维护关系(inverse=”false”),一得一方不维护(inverse=”true”)。这样减少了update语句也就减少了垃圾sql执行代码,提高了性能。
hibernate配置文件中hibernate.hbm2ddl.auto的值:
create: 先drop表再create (默认)
create-drop:也表示创建,不过在系统关闭之前执行一下drop;
update: 加载hibernate时自动更新数据库结构
validate: 加载hibernate时候自动检查数据库表结构是否发生改变,如果改变就抛出异常,不会更新。
hibernate配置中cascade的值:
none:对任何关系不进行级联(默认)
all: 对所有关系进行级联(即:save-update和delete)
save-update: 在进行save和update操作时进行级联
delete:在进行delete时进行级联
all-delete-orphan:当一个对象在关系图中成为孤儿时,删除该节点
lazy的值:
proxy:使用代理(3.0之后有的,默认)
true:是用懒加载
false:不使用懒加载
fetch(什么方式抓取数据)的值:
select:对相关的每张表进行select查询(默认)
join:采用连接表的方式一次性查询,效率较高
相关文章推荐
- 关于hibernate反响映射文件的总结
- hibernate根据映射文件生成数据库对象
- Hibernate映射文件
- Hibernate-类映射文件中常用属性的了解
- hibernate映射文件class元素属性详解
- 使用myeclipse的反向工程生成hibernate映射文件(.hbm.xml)和pojo类
- hibernate和Spring整合时,hibernate映射文件配置方式
- Hibernate的学习之路三(映射文件编写)
- ant深入浅出(一)ant+xdoclet 生成hibernate配置文件以及实体映射文件
- jbpm4.4下hibernate映射文件中表跟类的对应关系
- Hibernate开发步骤,执行流程、方言的作用、映射文件的作用、如何进行联合主键映射
- hibernate的映射文件字段长度和数据库里面的字段长度
- spring加载hibernate映射文件的几种方式
- 用MyEclipse自动生成hibernate映射文件和实体类
- Hibernate学习之映射文件
- hibernate映射文件set key one-to-many
- Hibernate的映射配置文件*.hbm.xml文件中class和property元素的各属性意义和设置
- hibernate映射文件
- Hibernate配置文件中映射元素详解
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明