¿Cuál es la diferencia entre @JoinColumn y mappedBy cuando se usa una asociación JPA @OneToMany?

Cuál es la diferencia entre:

@Entity
public class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
    @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
    private List<Branch> branches;
    ...
}

y

@Entity
public class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef")
    private List<Branch> branches;
    ...
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta