自己的摸索 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两个字段)的唯一性进行约束。

暂时停中。。。。

没什么经验...

猜你喜欢

转载自cnge06.iteye.com/blog/1491534