o que é @JoinColumn e como é usado no Hibernate

Eu tenho lido muito sobre @JoinColumn, mas ainda não entendi a idéia.

Tabela do paciente

CREATE TABLE patient (
patient_id BIGINT NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
PRIMARY KEY(patient_id));

Tabela do veículo

CREATE TABLE vehicles (
patient_id BIGINT NOT NULL,
vehicle_id BIGINT NOT NULL,
vehicle_manufacturer VARCHAR(255),
PRIMARY KEY (vehicle_id),
CONSTRAINT patienthasmanyvehicle FOREIGN KEY(patient_id) REFERENCES patient(patient_id));

Classe do Paciente

@OneToMany(mappedBy = "patient")
    private Collection<Vehicle> patientVehicles = new ArrayList<Vehicle>();

Classe do veículo

@ManyToOne
@JoinColumn(name="patient_id")
private Patient patient;

Estou confuso sobre como a classe Veículo parte, qual é a relação entre

Vehicle Class ---- Entity
@JoinColumn(name="patient_id") ---- annotation
private Patient patient ----field

Isso diz; oEntidade do veículo tem umChave estrangeira paraEntidade do paciente nomeadoPatient_id. Adicione oPatient_id como uma coluna noTabela de entidade do veículo

O parâmetro name do JoinColumn sempre deve ser umChave estrangeira ou chave primária?

Eu tenho lido isso, mas ainda estou confuso.JPA JoinColumn vs mappedBy

questionAnswers(4)

yourAnswerToTheQuestion