何时使用,不使用OneToOne和ManyToOne

bsr*_*bsr 11 java jpa

我刚开始阅读JPA,并在hibernate中实现了解细节.但是,为了继续发展到那时,你能帮助澄清一个基本的qn.

  1. 何时
    使用OneToOne如果实体管理器需要处理相关对象的持久性,我可以使用OneToOne.关键是,我总是可以在不指定oneToOne的情况下生活,但是我负责管理关系并确保引用的对象不处于瞬态状态.这是真的?

  2. 何时使用或不使用,ManyToOne
    说我正在定义一个Employee类,并且需要使用Employer定义rel.在这种情况下,我是否需要像下面那样指定manyToOne,如果不是,则需要指定

     @Entity   
        public class Employer {  
        String name;   
        }   
    
        @Entity   
        class Employee {  
            String name;  
            @ManytoOne  //or not??   
            Employer employer;   
            }
    
    Run Code Online (Sandbox Code Playgroud)

谢谢

Hen*_*ing 7

1:使用实体关系时,必须始终使用相应的注释(OneToOne,OneToMany,ManyToOne或ManyToMany).您的选择是您是否要确保关系背后的实体本身不是瞬态,或者在OneToOne注释上指定级联属性以让JPA为您处理.这允许您创建一个完整的对象图并在一次调用中保留它们:

@OneToOne(cascade = CascadeType.ALL)
private MyType myType;
Run Code Online (Sandbox Code Playgroud)

2:是的,雇主 - 雇员关系听起来像OneToMany关系,雇员 - 雇主关系将是ManyToOne.如果您想要两个方向,那就称为双向关系.有关详细信息,请查看Java EE教程中的相关部分.

Java EE教程中JPA部分是一个很好的参考.