Как стать автором
Обновить
5
0
Павел Стрекалов @spv32

Пользователь

Отправить сообщение

В Oracle, MySQL, PostgreSQL есть FAST_FORWARD для курсоров?

Юмор это такой про пул реквест. Типа есть предложения внести изменения в Agile-манифест - куда слать эти предложения?

Еще вариант картинки
image
Спасибо за очередное полезное замечание. Добавил в статью.

Спасибо за дополнение. Действительно, эта тема в статье раскрыта недостаточно.
У объекта можно выделить два типа полей: относящиеся к идентичности объекта и относящиеся к его состоянию.


Идентичность — то, что уникально идентифицирует объект и не меняется в процессе его жизни (например, ID в базе, дата рождения и тд).
Состояние — то, что может изменяться (например, возраст человека, цвет машины и тд).


В equals должны принимать участие только поля, относящиеся к идентичности объекта, но не к состоянию. Иначе, например, при изменении возраста у человека — это уже будет несколько разных объектов.


Для хранимых сущностей (которые entity, но не value object), как правило, в equals участвует только id.
Например, AbstractPersistable из spring-data-jpa:


return null == this.getId() ? false : this.getId().equals(that.getId());

Хотя для hibernate есть немного мудренее рекомендации (раз, два) — использовать бизнес (натуральные) ключи.
И еще несколько ссылок про JPA, hashCode() и equals(): раз, два, три, четыре

Большое спасибо! Вот это фейл. Поправил. PS В оригинале везде hashcode(), а я как-то не обратил внимания.
Да, если модификатор доступа не указан, то видимость внутри пакета.
float больше long
long примерно до 9*10^18
float примерно до 3*10^38

Спасибо за уточнение про хип. Но GC может удалять строки из пула.
https://stackoverflow.com/a/2433076
http://java-performance.info/string-intern-in-java-6-7-8/

result += " powerfulCode ".trim() == "powerfulCode" ? "0" : "1";
В этом случае результат false, потому что, когда метод trim() удаляет пробелы, он создаёт новый String с помощью оператора new.

Для строки с пробелами " powerfulCode " метод trim() создаст новый объект String.


System.out.println("duke".trim() == "duke".trim());
Это сравнение будет истинным, потому что метод trim() не создает новую строку.

Если пробелов нет "duke", то метод trim() не создает новую строку, а возвращает ту же строку.


javadoc trim():


returns — A string whose value is this string, with any leading and trailing white space removed, or this string if it has no leading or trailing white space.
Строка, значение которой равно этой строке с удаленными пробелами в начале и в конце или эту строку, если в ней нет пробельных символов

Из исходников trim():


return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
Большое спасибо. В оригинальной статье было так, не заметил. Исправил.

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность