如何使用HibernateWeb应用程序编程Spring?

如何使用HibernateWeb应用程序编程Spring?,spring,hibernate,Spring,Hibernate,我正在开发一个web应用程序,其中我有90个个人类字段,这些字段分为家庭详细信息、教育详细信息、个人详细信息等 我想为每个单独的形式,如家庭细节有父亲的名字,母亲的名字,兄弟姐妹等。。。其他字段的字段等 我希望每个细节都有单独的表,所有表都有通用的参考id 我的问题是我应该写多少bean类?是否有一个bean类可以从多个表单映射到多个表 class PersonRegister{ private Long iD; private String emailID; private Str

我正在开发一个web应用程序,其中我有90个个人类字段,这些字段分为家庭详细信息、教育详细信息、个人详细信息等

我想为每个单独的形式,如家庭细节有父亲的名字,母亲的名字,兄弟姐妹等。。。其他字段的字段等

我希望每个细节都有单独的表,所有表都有通用的参考id

我的问题是我应该写多少bean类?是否有一个bean类可以从多个表单映射到多个表

class PersonRegister{
  private Long iD;
  private String emailID;
  private String password;
   .
    .

     }//for register.......
登录后,我需要维护他/她的详细信息

或者

class person{
}


软件开发标准指定了哪种创建方式

不要过火,我相信在您的情况下,从维护的角度来看,单个但非常宽(即有很多列)的表将是最有效和最简单的。要记住的唯一一件事是,在加载大量行时,只查询必要的列/字段子集。否则,您将获取千字节的不必要数据,对于特定的用例来说是不需要的

不幸的是,Hibernate对此没有直接的支持,当为
Person
设计映射时,您将得到一个巨大的类,甚至更糟糕的是,Hibernate总是获取所有简单的列(以及多对一关系)。但是,您可以通过在数据库中创建几个只包含列子集的视图,或者通过将几个Java类映射到同一个表但只映射到列子集来克服这个问题


只有在模式未规范化的情况下,将数据库模型拆分为多个表才有好处。例如,在存储兄弟姐妹的名字和姓氏时,您可能希望有一个单独的
兄弟姐妹
表,下次输入其他家庭成员时,您可以重复使用同一行。这使得数据库更小,按同级搜索时可能更快。

您的问题归结为数据库规范化,正如Boyce和Codd深入描述的,请参阅

数据库规范化的主要优点是避免了修改异常。在您的情况下,如果每个人都有一个表,例如父亲姓氏父亲姓氏,并且您有多个父亲相同的人,则此数据将被复制,并且当您发现父亲姓氏中存在键入错误时,您可以为一个兄弟修改它,而不是为下一个兄弟修改它

在这种简化的情况下,数据库设计最佳实践将要求第一次规范化到一个单独的表中,该表具有父亲id父亲名字父亲姓氏,并且您的person表与其具有一对多关系

对于一对一的关系,例如,个人->个人教育详情,存在一些争议。在第一范式的原始定义中,每个可选字段都将通过放入自己的表来规范化。后来,通过在关系数据库中引入“null”,这一点被削弱了,请参见。但是,如果一整组列可以同时为null,则可以将它们放在一个单独的表中,并具有一对一的关系

例如,如果您不知道某个人的教育详细信息,则其所有相关字段都为空,因此您最好将其拆分到单独的表中,而不要为该人创建personeducationdetails记录

class PersonFamilyDetails{}
class PersonEducationDetails{} 
etc