hibernate之集合映射的属性详细解释

本文详细介绍了Hibernate中三种常用的集合映射方式:map、list和set,并解释了这些集合映射的相关配置属性及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                           hibernate之集合映射的属性详细解释
                                            
        集合映射,总共有七种,最为常用的是list,set,map集合
                    

1.map集合映射
private Map<String, String> address1 =new HashMap<String, String>();
                       get和set省略

                        map的配置    
<!--map集合
         key  指定外键
         map-key 指定map的key
         element 指定map的value     
-->
        <map name="address1" table="address1">
        <key column="address_id"></key>
        <map-key column="province" type="string"></map-key>
        <element column="city" type="string"></element>
        </map>
    

运行类   
    public void test_map_list() {
        Session session = sf.openSession();
        person p = new person();
        p.setName("罗小姐");
        p.getAddress1().put("1", "云南");
        p.getAddress1().put("2", "普洱");
        session.save(p);
        Transaction tx = session.beginTransaction();
        tx.commit();
    }


 
2.list
po文件

private List<String> address2=new ArrayList<String>();//省略get和set方法

List的配置文件
    list-index  指定的是排序列的名称 (因为要保证list集合的有序)
    key 指定外键
    element 指定该数据库的属性
 <list name="address2" table="address_list">
        <key column="uid"></key>
        <list-index column="idx"></list-index>
        <element column="city" type="string"></element>
    </list>

运行类
    @Test
    public void test_list() {
        Session session = sf.openSession();
        person p=new person();
        p.setName("叶小姐");
        p.getAddress2().add("云南省");
        p.getAddress2().add("楚雄市");
        
        Transaction tx = session.beginTransaction();
        session.save(p);
        tx.commit();
        session.close();
    }
    
3.set

    private Set<String> address;   
    
    //get,set方法省略

set配置

      <set name="address">
          <key column="address_id"></key>                         
          <element column="addressname" type="string"></element>
      </set>
 
最后完成运行类即可

public class app {
    static SessionFactory sf;
    static{
        sf=new Configuration().configure().buildSessionFactory();
    }
    @Test
    public void test_add_onetomany() {
        Session session = sf.openSession();
        Transaction tx = session.beginTransaction();
        person p = new person();
        p.setName("林先生");
        Set<String> address = new HashSet<String>();
        address.add("东莞");
        address.add("虎门");
        p.setAddress(address);
        session.save(p);
        tx.commit();
        session.close();
    }
}

最后,做出一个总结:
  集合映射的属性:1.table
                  2.schema:指定保存集合属性的数据表的schema的名称,用于覆盖在根元素中定义的schema属性
                  3.lazy:是否开启延迟加载,默认为true
                  4.inverse(字面意思:相反的)指定该集合作为双向关联关系中的另一端
                  5.cascade:指定当操作持久化对象时是否让操作联到子实体
                  6.order-by:该属性用于设置数据库对集合元素排序,该属性仅对1.4或者更高版本的jdk有效,意思是为字段加上asc或者desc关键字
                  7.sort:指定集合排序顺序
                  8.where:指定任意sql语句中的where条件,该条件将在加载或者删除集合元素时起作用,只有满足该sql查询时进行排序的,而不是直接在内存中排序
                  9.batch-size:定义延迟加载中每批抓取集合元素的数量。该数量默认为1.
                  10.access:指定hibernate访问集合属性的访问策略,默认为property
                  11.mutable:指定集合中的元素是否可变,如果指定该属性为false,则表明该集合元素不可变,在某些情况下可以进行一些小的性能优化。
                    
                  12集合映射所拥有的属性:
                       12.1.list-index:list和数组的索引列
                       12.2.map-key:   map集合和基本数据类型的索引列
                       12.3.map-key-many-to-many:  map集合和实体引用类型的索引列
                       12.4.composite-map-key:  map集合和复合数据类型的索引列
                       12.5.element    当集合元素是基本类型以及其包装类型,字符串,日期类型时使用该元素。
                       12.6.composite-element    当集合元素时复合类型时使用该元素
                       12.7.one-to-many或者many-to-one: 当集合元素是其他持久化对象的引用时使用它们。也就是说这两个元素主要用于关联关系映射。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值