Как Hibernate извлекает данные в отношениях OneToMany под капотом? - PullRequest
0 голосов
/ 22 января 2020

Я занимаюсь разработкой библиотеки ORM, похожей на Hibernate. Теперь я застрял в отношениях OneToMany. Я хотел бы знать, как автоматически получать данные из базы данных при вызове getter стороны one и как Hibernate делает это под капотом.

Многие стороны

public class Film {
    private int id;
    private String name;

    @JoinColumn(name="producer_id")
    private Producer producer;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Producer getProducer() {
        return producer;
    }

    public void setProducer(Producer producer) {
        this.producer = producer;
    }
}

Одна сторона

public class Producer {
    @Id
    private int id;
    private String name;

    @OneToMany(mappedBy="producer")
    private Set<Film> films;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    // When called, it executes: SELECT ... FROM Film where producer_id = ?
    public Set<Film> getFilms() {
        return films;
    }
}

Другими словами, я хочу заполнить films внутри Producer только когда getFilms() вызывается.

1 Ответ

1 голос
/ 22 января 2020

Hibernate использует прокси классов сущностей вместо реальных классов сущностей, используя bytebuddy, генерируя дополнительный код во время выполнения.

Кстати, мне просто интересно, почему вы разрабатываете свой собственный ORM, когда вы можете использовать сам hibernate? Это лучший ORM, охватывающий практически все виды использования и различные методы оптимизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...