Hibernate_组件学习

hibernate组件区分为普通组件和动态组件

一、普通组件
在.hbm.xml配置文件中,添加节点对应组件类文件名,property节点一一对应类中的属性;
示例:
在主Javabean类(Person类)中引入另外一个副JavaBean类(Address类) — public Address address,由于一个人会有几个地址(家庭地址、工作地址等),所以Address是Person的一个组件
1)public String Address(){
  public String homeaddress;
  public String workaddress;
      }
添加get和set方法、Address构造类;
2)在Person类中Address作为一个基本属性,添加get和set方法;
3).hbm.xml文件配置
<component name="Person">----对应Person类
<property name="workaddress" column="workaddress"/>
<property name="homeaddress" column="homeaddress"/>----Person中的属性。column为数据库中对应的字段
</component>
二、动态组件
动态组件与普通组件区别的地方就是普通组件属性是固定的,动态组件是变化的,动态组件要求是能动态的存储数据,不用额外建Javabean类,因为Map中有Key与Value对应,所以Map类就能解决这个问题
1)在Person类中定义:private Map address = new HashMap();
2).hbm.xml文件配置:
< dynamic-component name="address ">
<property key="workaddress" column="workaddress" type="String">
<property key="homeaddress" column="homeaddress" type="String">----key对应Map中的键值。column为数据库中对应的字段,type为字段的类型(String,boolean,double,Integer)
</ dynamic-component>
额外的一个高效循环访问Map类中的元素:
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的, entryset的访问速度是最高效的;
Map map  =   new  HashMap();
Iterator iter 
=  map.entrySet().iterator();
while  (iter.hasNext())  {
   Map.Entry entry = (Map.Entry) iter.next(); 
   Object key = entry.getKey();
 Object val = entry.getValue();
 }

原理: 对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。
        而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
  效率高,以后一定要使用
entryset 方式 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值