Hibernate深入浅出(十四)-----读深入浅出hibernate有感

Hibernate深入浅出(十四)-----读深入浅出hibernate有感
   对于新系统的设计开发而言,我们应该尽量避免在哭表中引入与业务逻辑相关的主键关系。
    将业务逻辑主键引入库表,将使得底层库表结构与业务逻辑相耦合,之后业务逻辑的变化,将很可能对底层数据库结构产生连带影响。
    复合主键的引入,很大程度上意味着业务逻辑已经侵入到数据存储逻辑之中。因此在新系统的设计过程中,我们应该尽量避免这样的情况出现。
    Hibernate中,通过composite-id节点对复合主键进行定义。
    对于复合主键而言,我们可以通过2种方式确定主键:
    1>基于实体类属性的复合主键
    复合主键由实体类中的属性组成,此时,实体类本身即同事扮演复合主键类的角色。
   
< hibernate - mapping >
    
< class  name = " com.wyq.hibernate.TUser2 "  table = " T_User2 " >
        
< composite - id >
            
< key - property name = " lastname "  column = " lastname "  type = " string " />
            
< key - property name = " firstname "  column = " firstname "  type = " string " />
        
</ composite - id >
        
< property name = " age "  column = " age "  type = " integer " >
        
</ property >
    
</ class >
</ hibernate - mapping >
    Hibernate要求复合主键类实现equals和hashcode方法,以作为不同数据之间识别的标志。
    主键类的加载:我们可以将TUser2类对象本身作为查询条件进行检索:
    2>基于主键类的复合主键
    我们可以将主键属性独立到一个单独的类中。实现方法类似,只不过映射文件的composite-id节点要引入class和name属性。

你可能感兴趣的:(Hibernate深入浅出(十四)-----读深入浅出hibernate有感)