作者adrianshum (Alien)
看板java
标题Re: [问题] hibernate的inverse到底是...??
时间Mon Mar 14 16:10:48 2011
※ 引述《powerjj (ya)》之铭言:
: 才刚开始接触hibernate,正在了解了其中一些东西的意义
: 但是我还是搞不懂inverse到底是在做什麽="=
: 查了好久网路的说明,似乎使用在双方"同时"进行连动时,
: 将主从连动的关系反过来,像是一对多的情况改成多对一...
: 但我不太清楚这到底有什麽意义@@?
: 所谓连动不就是双方都会在内值变化时影响到对方吗?
: 那这样从哪个方向有什麽关系吗?
(inverse 该是 JPA annotation 里面 mappedBy 的意思吧?)
关系在於每个 relationship 都应该只有一个 mapping
不然的话, 假设 A -> B 是 1-m, 以一个 A 里面的 List<B>
代表, 而 B->A 是 m-1, 以 B 里面的 A refernce 代表.
各自做 mapping 的话, 要是搞一轮 update 後, 在 a1 里的 List<B>
有 b1 的存在, 但 b1 里的 A ref 指向的是 a2, Hibernate
究竟该信哪一边?
所以只该以一边作准, 而另一边则标记为 inverse.
: 另外我还想请问all-delete-orphan和delete-orphan的意思...
: 我搞不清楚为什麽还有有这两个,原本的save-update , delete , all
: 三个不就已经涵盖所有动作了?
: 那这两个orphan到底能有什麽惊人之举呢= =?
delete-orphan 会把没有人 refer 的entity 自动 delete.
不然的话, 以前用 cascade all 只是会把 relationship 删
走, 东西还是在...
: 网路上的说明我也看了超多的,但大概是程度太差了还不太能理解...
: 拜托hibernate前辈请指导一下吧...万分感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.238.156.185
1F:推 powerjj:喔喔感谢@@先推再来仔细看看 03/14 21:21