¿Qué es @JoinColumn y cómo se usa en Hibernate?

He estado leyendo mucho sobre @JoinColumn pero todavía no entiendo la idea.

Tabla de pacientes

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

Tabla de vehículos

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));

Clase de paciente

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

Clase de vehículo

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

Estoy confundido sobre cómo parte la clase Vehículo, cuál es la relación entre

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

¿Eso dice? losEntidad Vehicular tiene unClave externa aEntidad paciente nombradaID del paciente. Añade elID del paciente como una columna en elTabla de entidad del vehículo

¿El parámetro de nombre de JoinColumn siempre debe ser unClave externa o clave primaria?

He estado leyendo esto pero todavía estoy confundido.JPA JoinColumn vs mappedBy

Respuestas a la pregunta(4)

Su respuesta a la pregunta