Você tem três opções:
1 - Apenas um arquivo xml para todas as entidades
2 - Um arquivo xml para cada entidade
3 - Utilizar anotações
Na minha opinião a primeira opção vai te levar a um xml bastante grande, se tornando dificil de ser lido. A segunda opção torna as coisas um pouco mais limpas. Mas eu gosto mesmo é de utilizar anotações para descrever minhas entidades.
Exemplo de mapeamento xml distribuído em arquivos
Arquivo principal (hibernate.cfg.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.username">*****</property>
<property name="hibernate.connection.password">*****</property>
<property name="hibernate.connection.url">jdbc:sqlserver://enderecoServidor;databaseName=nomeDatabase</property>
<property name="hibernate.c3p0.max_size">50</property>
<property name="hibernate.c3p0.min_size">0</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">300</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<mapping resource="contato.hbm.xml" />
<mapping resource="cliente.hbm.xml" />
</session-factory>
</hibernate-configuration>
Arquivos secundários (entidade cliente):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.brasmarineit.entidade.custeio.Cliente" table="cliente">
<id column="idCliente" name="idCliente" type="int"/>
<property name="NomeCliente" type="string"/>
<property name="TextoVoucherCliente" type="string"/>
</class>
</hibernate-mapping>
Põe esses arquivos de configuração do hibernate (*.cfg.xml) na raiz da src. Por exemplo:
- src
- hibernate.cfg.xml
- cliente.cfg.xml
- br
- com
- companhia
- ConexaoFactory.java
E só para complementar um exemplo de Entidade mapeada através de anotação, onde não há a necessidade de nenhum arquivo xml descrevendo a mesma:
@Entity
@Table(name="localidade")
public class Localidade implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id_commodity")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="localidade")
private String localidade;
@Column(name="obs")
private String obs;
@Column(name="tipo")
private byte tipo;
// getters and setters
}
Espero ter ajudado...