关于hibernate建表的疑惑

[size=medium]据说实际过程中都是先建表再建类,那如果实体类之间存在一对多等单向或双向的关联,难道这时是自己直接在数据库表中定义外键?(这种关系在数据库中不是很清晰啊)然后再反向工程生成的类中的属性逻辑还对吗?
实际中如果是先建表,然后反向工程生成实体类?一般应该不能一步到位啊,如果我想要在一个实体类中有Set用于一对多,反向工程之后能得到这种属性吗?
以前就算是简单的POJO都要修改映射文件,如果映射文件改了,对应的数据库也会因此发生改变吗?
有实际开发经验的谈谈,谢了。[/size]

我们项目中都是先建实体类和实体类之间的关系,然后根据这些实体类生成hbm映射文件,再根据hbm映射文件生成数据库脚本,最后使用数据库脚本生成数据库表。