Если вы хотите просмотреть фактические параметры, используемые для запроса, вы можете использовать
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql=TRACE
. Затем обратите внимание, что фактическое значение параметра отображается как binding parameter......
2018-08-07 14:14:36.079 DEBUG 44804 --- [ main] org.hibernate.SQL : select employee0_.id as id1_0_, employee0_.department as departme2_0_, employee0_.joining_date as joining_3_0_, employee0_.name as name4_0_ from employee employee0_ where employee0_.joining_date=?
2018-08-07 14:14:36.079 TRACE 44804 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Tue Aug 07 00:00:00 SGT 2018]
Это большая тема! Я бы порекомендовал вам начать с чтения Потоки ввода-вывода :
Поток ввода-вывода представляет собой ввод источник или место назначения вывода. А поток может представлять множество различных виды источников и направлений, включая файлы на диске, устройства, прочее программ и массивов памяти.
Потоки поддерживают множество различных типов данных, включая простые байты, примитивные типы данных, локализованные персонажи и предметы. Некоторые потоки просто передать данные; другие манипулируют и преобразовать данные полезными способами.
Потоки: по одному байту за раз. Подходит для двоичных данных.
Читатели / писатели: по одному символу за раз. Подходит для текстовых данных.
Все, что «Буферизуется»: много байтов / символов за раз. Почти всегда хорошо.
При изучении Java я придумал эту мысленную схему о java.io:[12126 impressionStreams
Указанные вами специализации - это особые типы, используемые для предоставления стандартного интерфейса для различных источников данных. Например, FileInputStream и ObjectInputStream будут реализовывать интерфейс InputStream, но будут работать с файлами и объектами соответственно.
Разделите каждое имя на слова: каждая заглавная буква - это другое слово.
. и так далее
Как пишет mmyers:
Потоки: по одному байту за раз.
Считывающие / записывающие устройства: по одному символу за раз.
Буферизованный *: много байтов / символов за раз.
Я также нашел этот java_tip_how_read_files_quickly
Очень полезным! Он показывает, какие потоки наиболее эффективны.
Байтовые потоки - это в основном и широко используемый тип потока в java 1.0 как для символьных, так и для байтовых. После java 1.0 он устарел, и символьные потоки играют важную роль. т.е., например,
BufferedReader получит символ из источника, а его конструктор выглядит как BufferedReader (Reader inputReader) ..
Здесь Reader - это абстрактный класс, и единственный из его конкретных классов - InputStreamReader, который преобразует байты в символы и принимает ввод с клавиатуры (System.in) ...
BufferedReader : Содержит внутренний буфер, который будет читать символы из потока. Внутренний счетчик отслеживает следующий символ, который будет передан в буфер с помощью функции read (). InputStreamReader принимает входные данные как байты и внутренне преобразует их в символы.
This is probably the most thorough overview of the various streams, Reader's and Writer's in the Java IO API:
http://tutorials.jenkov.com/java-io/overview.html
It's part of a larger Java IO tutorial covering both byte and charater based streams.
It also covers streams that are used for reading and writing raw numeric data, like int's float's etc.
It also covers streams used for parsing like the PushbackInputStream and the PushbackReader.