chho的专栏

对于整个世界我微不足道,但是我对于自己确是全部

用户操作
[即时聊天] [发私信] [加为好友]
常浩ID:chho
78324次访问,排名1344,好友0人,关注者1人。
chho的文章
原创 106 篇
翻译 0 篇
转载 0 篇
评论 24 篇
chho的公告


名字:Chho
JAVA程序员,现在对Linux产生了浓厚的兴趣。

我的Mail:
最近评论
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Hibernate入门13 - Map 映射收藏

    新一篇: Hibernate入门14 - Set与Map的排序 | 旧一篇: Hibernate入门12 - List 映射

    入门 13 - Map 映射

    假设您现在要设计一个在线档案管理,每一个使用者可以上载自己的档案,并为档案加上描述,我们可以使用Map型态对象来记录上传的档案,以档案描述作为键(key),以文件名称作为值(value),我们的User类别设计如下:

    User.java

    package onlyfun.caterpillar;

     

    import java.util.*;

     

    public class User {

        private long id;

        private String name;

        private Map files = new HashMap();

      

        public long getId() {

            return id;

        }

        public void setId(long id) {

            this.id = id;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }  

        public Map getFiles() {

            return files;

        }

        public void setFiles(Map files) {

            this.files = files;

        }

        public void addFiles(String des, String name) {

            files.put(des, name);

        }

    }


    要在数据库中映像Map,我们在映像文件中使用<map>卷标,而索引行则使用<index>卷标指定,在这边我们使用Hibernate型态string,作为记录档案描述的行,我们的映像文件如下:

    User.hbm.xml

    <?xml version="1.0"?>

    <!DOCTYPE hibernate-mapping

        PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"

        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

     

    <hibernate-mapping>

     

        <class name="onlyfun.caterpillar.User" table="USER">

     

            <id name="id" type="long" unsaved-value="null">

                <column name="USER_ID"/>

                <generator class="increment"/>

            </id>

     

            <property name="name" type="string" not-null="true">

                <column name="NAME" length="16" not-null="true"/>

            </property>

          

            <map name="files" table="FILES">

                <key column="USER_ID"/>

                <index column="DESCRIPTION" type="string"/>

                <element type="string" column="FILENAME" not-null="true"/>

            </map>

        </class>

     

    </hibernate-mapping>


    同样的,我们使用两个表格来分别映像User与其中包括的Map对象数据,其中两个表格共享相同的USER_ID,假设我们使用以下的程序来储存两个User的数据:

    User user1 = new User();

            user1.setName("caterpillar");

            user1.addFiles("libary of hibernate", "hibernate2.jar");

            user1.addFiles("libary if jdbc", "jdbc.jar");

          

            User user2 = new User();

            user2.setName("momor");

            user2.addFiles("cool fan", "fan.jpg");

            user2.addFiles("fat dog", "bush.jpg");

          

            Session session = sessionFactory.openSession();

            Transaction tx= session.beginTransaction();

            session.save(user1);

            session.save(user2);

            tx.commit();

            session.close();


    则在数据库中的表格数据将会记录如下:

    mysql> select * from user;

    +---------+-------------+

    | USER_ID | NAME        |

    +---------+-------------+

    |       1 | caterpillar |

    |       2 | momor       |

    +---------+-------------+

    2 rows in set (0.01 sec)

     

    mysql> select * from files;

    +---------+----------------+---------------------+

    | USER_ID | FILENAME       | DESCRIPTION         |

    +---------+----------------+---------------------+

    |       1 | jdbc.jar       | libary if jdbc      |

    |       1 | hibernate2.jar | libary of hibernate |

    |       2 | fan.jpg        | cool fan            |

    |       2 | bush.jpg       | fat dog             |

    +---------+----------------+---------------------+

    4 rows in set (0.00 sec)

    发表于 @ 2005年01月27日 20:00:00|编辑

    新一篇: Hibernate入门14 - Set与Map的排序 | 旧一篇: Hibernate入门12 - List 映射

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © chho