Xxx.hbm.xml --- como funciona?

Alguém poderia me tirar algumas dúvidas sobre um arquivo com esta estrutura:

[code]



    <property
        name="nome"
        type="java.lang.String"
        column="nome"
        length="255"
        not-null="true"
    />
    
    <set name="cds" lazy="true" inverse="true">
        <key column="artista_id"/>
        <one-to-many class="br.com.mundojava.hiberante.modelo.Cd"/>
    </set>
</class>

[/code]

nessa linha:

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

Eu estou associando id da classe com a id da tabela no banco?

e a tag property está fazendo o q?

e aqui oque está acontecendo:

<key column="artista_id"/> Chave primária? mas na em cima não era só id? :cry:

id

key column