Нарушает ли hibernate принцип инкапсуляции

142
31 июля 2021, 19:10

hibernate реализует ORM, может сам создавать новые объекты и приводить типы по своему усмотрению.

Т.к. он может связать ООП и реализационную базу данных, это не может привести к нарушению инкапсуляции java? Ведь реализация должна быть сокрыта а тут нет.

@Id
@Column(name= "id")
private Long id;

и потом hibernate может редактировать это поле.

я что-то запутался.

Answer 1

Вы абсолютно правы, hibernate нарушает принцип инкапсуляции. И даже более того, любая ORM заставляет нас использовать POJO классы, которые не имеют ничего общего с инкапсуляцией. Тем не менее, есть способ работать с БД, не нарушая принцип инкапсуляции - sql-speaking-objects.

Я никого ни к чему не призываю, просто есть разные подходы работы с БД. Однако некоторые программисты могут заметить, что на самом деле POJO классы - это не объекты, это данные, а, значит, там не может нарушатся принципы объектного проектирования. Такое суждение имеет право на жизнь, при таком подходе в программах перемешиваются данные и объекты, работающие с данными, но это уже не имеет ничего общего с ООП, потому что в ОО архитектуре есть только объекты, а данные хранятся всегда внутри объектов и никогда не выглядывают наружу.

READ ALSO
Unknown table при работе с таблицами в БД

Unknown table при работе с таблицами в БД

Среда разработки IntelijIdea, подключение к MySqlВ БД таблица с названием books уже создана, не могу понять почему выдает такую ошибку!

134
Интерпретатор скрипта парсера

Интерпретатор скрипта парсера

Необходимо разработать приложение для парсера HTML страницы

262
область видимости AngularJs

область видимости AngularJs

Всем доброго времени сутокУ меня вопрос могу ли я изменить свойства $scope обычного контроллера из вне фреймворка? я использую socket io и приходящие...

127