当前位置:首页 > 开发 > 互联网 > 正文

自己的摸索 Hibernate使用

发表于: 2012-04-20   作者:cnge06   来源:转载   浏览:
摘要:   1.将所有的关联关系设计成manytoone形式。   在学习数据库的时候,接触过的关联关系有:多对一(一对多)、一对一;在RDB里,并没有多对多的关系,这些都是些常理。   将所有关联关系设计成manytoone,当然会遇到一些问题。 (讨论内容的均通过注解实现,配置文件方式请参照hibernate相关文档)   一对一:关系的

 

1.将所有的关联关系设计成manytoone形式。

 

在学习数据库的时候,接触过的关联关系有:多对一(一对多)、一对一;在RDB里,并没有多对多的关系,这些都是些常理。

 

将所有关联关系设计成manytoone,当然会遇到一些问题。

(讨论内容的均通过注解实现,配置文件方式请参照hibernate相关文档)

 

一对一:关系的维护交由一方维护(比如A)。在维护方(A)对被维护方(B)引用的get方法(getB())上加上:

 

@ManyToOne
@JoinColumn(nullable=false,unique=true)

 注解达到onetoone的效果,如果需要双向关联,则在被维护方(B)对维护方(A)引用的get方法()上加上:

 

@OneToOne(mappedBy="a")

 mappedBy="a"表示关系维护交由A。

 

多对多:当然可以对两个model通过多对多的设置来达到需求,hibernate自然也会为我们创建中间表(通过配置,甚至可以在中间表中插入其它字段),不过,增加一个model的形式是让我更感便利的方式。这样做的时候当然会遇到一些新的问题(所幸,这些问题并非不容易解决,下面的描述将有助于解决这些问题)。

 

2.逻辑主键替代业务主键

在多对多拆分成两个多对一关系时,拆分出来的中间model必然会面对多个字段组合唯一约束性的问题,这个时候,有两个方案可供选择,一种是通过联合主键的方式实现(如果这样,我们又要多写一个生成主键的类了),这样,还是业务主键;另一种,还是以id作为逻辑主键,通过在model配置

 

@Table(uniqueConstraints= @UniqueConstraint(
        name="param1_param2", 
        columnNames={"param1", "param2"} ) )

 来对多个字段(这里是param1和param2两个字段)的唯一性进行约束。

 

暂时停中。。。。

 

没什么经验...

 

 

自己的摸索 Hibernate使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号