LATE EDIT: Начиная с Java 8, вы не должны использовать ни java.util.Date
, ни java.sql.Date
, если можете вообще избежать этого, и вместо этого предпочитаете использовать пакет java.time
(на основе Joda) а не что-либо другое. Если вы не на Java 8, вот исходный ответ:
java.sql.Date
- когда вы вызываете методы / конструкторы библиотек, которые его используют (например, JDBC). Не иначе. Вы не хотите вводить зависимости к библиотекам баз данных для приложений / модулей, которые явно не имеют отношения к JDBC.
java.util.Date
- при использовании библиотек, которые его используют. В противном случае, как можно меньше, по нескольким причинам:
Calendar
. Если вы чувствуете, что это слишком много, ввести новую зависимость, такую как Joda, long
s, не так уж плохо использовать для полей timestamp в объектах, хотя я сам обычно обертываю их в juD при их передаче, для безопасности типов и документации.