ГЛАВА 1 Ступа и Мибатис
Hibernate - самая популярная структура картирования O/R в настоящее время. Он родился в SF.net и теперь стал частью JBoss. Mybatis - еще одна отличная структура картирования O/R. В настоящее время принадлежит подпроекту Apache.
Mybatis ссылки на официальный веб -сайт: http://www.mybatis.org/core/zh/index.html
Справочные материалы Hibernate: http://docs.jboss.org/hibernate/core/3.6/reference/zh-cn/html_single/
1.1 Введение в Hibernate
Hibernate обеспечивает относительно полную инкапсуляцию структуры базы данных. Отображение Hibernate O/R реализует картирование между таблицами POJO и базы данных, а также автоматическим генерацией и выполнением SQL. Программистам часто нужно только определить взаимосвязь картирования между таблицами POJO и базы данных, и могут завершить операции по упорным уровням с помощью методов, предоставленных Hibernate. Программисты даже не должны быть опытными в SQL. Hibernate/OJB автоматически генерирует соответствующий SQL и вызовет интерфейс JDBC для выполнения в соответствии с установленной логикой хранения.
1.2 Введение в mybatis
В центре внимания ибатиса сосредоточено на картировании между Pojo и SQL. Затем, отображая файл конфигурации, параметры, требуемые SQL, и возвращаемых полей результата, отображаются с указанным POJO. По сравнению с Hibernate "O/R" IBATIS - это реализация ORM «Картирования SQL».
Сравнение развития главы 2
Скорость развития
Настоящее мастерство Hibernate сложнее, чем Mybatis. Mybatis Framework относительно прост и прост в использовании, но также относительно прост. Лично, я думаю, чтобы использовать Mybatis хорошо, вы должны сначала понять Hibernate.
Сообщество развития
Hibernate и Mybatis являются популярными рамками разработки настойчивых слоев, но сообщество разработчиков Hibernate относительно живое, поддерживает многие инструменты, а обновления быстрее. Текущая самая высокая версия - 4.1.8. Mybatis относительно спокойный и имеет меньше инструментов, а текущая самая высокая версия - 3.2.
Рабочая нагрузка на разработку
Hibernate и Mybatis имеют соответствующие инструменты генерации кода. Можно сгенерировать простые и основные методы слоя DAO.
Для передовых запросов Mybatis требует ручного написания заявлений SQL и ResultMap. Hibernate имеет хороший механизм картирования, поэтому разработчикам не нужно заботиться о генерации SQL и картировании результатов, и могут больше сосредоточиться на бизнес -процессах.
Глава 3 Сравнение настройки системы
План настройки Hibernate разрабатывает разумную стратегию кэширования;
Попробуйте использовать ленивую функцию загрузки;
Принять разумный механизм управления сеансами;
Используйте пакетный захват и установите разумные параметры партии (batch_size);
Выполнить разумный дизайн картирования O/R
Mybatis Tuing Solution
Mybatis согласуется с жизненным циклом сеанса Hibernate с точки зрения сеанса, и также требуется разумный механизм управления сеансом. Mybatis также имеет механизм кеша 2 -го уровня. Mybatis может выполнить подробный дизайн оптимизации SQL.
Аспекты оптимизации SQL
Запрос Hibernate будет запросить все поля в таблице, что приведет к использованию производительности. Hibernate также может написать сам SQL, чтобы указать поля, которые необходимо запрашивать, но это разрушает простоту развития спящих. SQL Mybatis написан вручную, поэтому вы можете указать поля для запроса по мере необходимости.
Настройка операторов HQL Hibernate требует печати SQL, и многим людям не нравится SQL Hibernate, потому что он слишком уродливый. SQL Mybatis написан вручную самостоятельно, так что его легко приспособиться. Но Hibernate имеет свою собственную статистику журнала. Сам Mybatis не содержит статистики журнала и использует log4j для регистрации.
Масштабируемость
Ассоциация между Hibernate и конкретными базами данных должна быть настроена только в файле XML. Все операторы HQL не имеют ничего общего с используемой конкретной базой данных, и они очень портативны. Все операторы SQL в проекте Mybatis зависят от используемой базы данных, поэтому поддержка различных типов баз данных не хороша.
Глава 4 Стратегии управления объектами и ползания
Управление объектами
Hibernate - это полное решение для объекта/реляционного отображения, которое предоставляет функциональность управления государством объекта, поэтому разработчикам больше не нужно обращать внимание на детали базовой системы баз данных. То есть по сравнению с общими сценариями упорного уровня JDBC/SQL, которые требуют управления операторами SQL, Hibernate принимает более естественную объектно-ориентированную перспективу для постоянных данных в приложениях Java.
Другими словами, разработчики, использующие Hibernate, всегда должны обращать внимание на состояние объекта и не должны рассматривать выполнение операторов SQL. Эта часть деталей управлялась Hibernate, и только разработчики должны понимать при настройке производительности системы.
Mybatis не имеет документации в этой области, поэтому пользователи должны сами управлять объектами.
Стратегия ползания
Hibernate имеет хороший механизм для ползающих объектов, связанных с объектами. Для каждой связи ассоциации можно подробно подчеркнуть, следует ли задержать загрузку, и предоставляются четыре режима: ползание ассоциации, ползание запросов, ползание под подкоров и ползание партии. Он настроен и обрабатывается подробно.
Ленивая загрузка Mybatis настроена во всем мире.
Глава 5 Сравнение механизмов кеша
Спечный кеш
Кэш Hibernate Level 1 - это кэш сеанса. Если вы хорошо используете кэш 1 -го уровня, вам нужно хорошо управлять жизненным циклом сеанса. Рекомендуется использовать сеанс в операции действия. Кэш 1 -го уровня требует строгого управления сеансом.
Кэш Hibernate Level 2-это кэш сеанса-фактического уровня. Кэш сеансафактория делится на встроенный кэш и внешний кэш. Встроенный кэш сохраняет данные, содержащиеся в некоторых атрибутах сбора объекта SessionFactory (данные элемента отображения и предопределенные операторы SQL и т. Д.), Которые только для чтения для приложений. Внешний кэш хранит копию данных базы данных, которая аналогична основному кэшу. В дополнение к использованию памяти в качестве среды хранения, вторичный кэш также может использовать внешние устройства хранения, такие как жесткие диски. Вторичный кэш называется кэшем на уровне процесса или кэш SessionFactory-уровня. Это может быть разделено всеми сессиями, и его жизненный цикл существует и исчезает с жизненным циклом сеансафакторию.
Mybatis Cache
Mybatis содержит очень мощную функцию кэша запросов, которую можно настроить и настроить очень легко. Было реализовано много улучшений реализации кэша в Mybatis 3, что делает его более мощным и простым в настройке.
По умолчанию кэширование не включено. В дополнение к локальному кешу сеанса, он может улучшить монетизацию и обработку круговых зависимостей также необходимы. Чтобы включить кэш уровня 2, вам нужно добавить строку в свой файл сопоставления SQL: <cache/>
Это буквально. Эффект этого простого утверждения заключается в следующем:
Все выбранные операторы в файле операторов сопоставления будут кэшированы.
Все операторы вставки, обновления и удаления в файл оператора отображения обновляют кэш.
Кэш будет извлечен с использованием наименее используемого (LRU, наименее недавно используемый) алгоритм.
В зависимости от графика (например, интервал промывки, без интервала обновления), кэш не будет обновляться ни в одном хронологическом порядке.
Кэш хранит 1024 ссылки на сбор или объект списков (независимо от того, что возвращает метод запроса).
Кэш считается кэшем для чтения/записи (читаемого/записи), что означает, что поиск объекта не является общим и может быть безопасно изменен вызывающим абонент без вмешательства в потенциальные изменения, сделанные другими абонентами или потоками.
Все эти свойства могут быть изменены с помощью свойств кэша.
Например: <cache eviction = "fifo" flushinterval = "60000" size = "512" readonly = "true"/>
Эта более продвинутая конфигурация создает кэш FIFO и обновляется каждые 60 секунд, сохраняя 512 ссылок на объект или список результата, а возвращаемый объект считается только для чтения, поэтому изменение их между вызывающими в разных потоках приведет к конфликтам. Доступные стратегии восстановления: по умолчанию - LRU:
LRU наименьшее недавно: Удалить объекты, которые не использовались в течение самого долгого времени.
FIFO First On First Out: удалить объекты в порядке, в котором они входят в кеш.
Мягкая мягкая ссылка: удаляет объекты на основе состояния коллекционера мусора и правил мягких ссылок.
Слабые слабые ссылки: более агрессивно удаляют объекты на основе состояния коллекционера мусора и слабых справочных правил.
FlushInterval может быть установлен на любое положительное целое число, и они представляют собой разумную миллисекундную форму периода времени. По умолчанию не установлено, то есть нет интервала обновления, и кэш обновляется только при вызове оператора.
Размер (количество ссылок) может быть установлен на любое положительное целое число, запомните количество объектов, которые вы кэш и количество доступных ресурсов памяти в вашей управляемой среде. Значение по умолчанию составляет 1024.
Свойство Readonly может быть установлено на TRUE или FALSE. Кэш только для чтения возвращает один и тот же экземпляр объекта кэша для всех вызывающих абонентов. Следовательно, эти объекты не могут быть изменены. Это обеспечивает важные преимущества производительности. Читаемый и писательный кэш возвращает копию объекта кэша (посредством сериализации). Это будет медленнее, но безопасно, так что по умолчанию это ложно.
Сходства
В дополнение к использованию механизма кэширования системы по умолчанию, вторичные кэши Hibernate и Mybatis могут полностью перезаписать поведение кэша, внедряя ваш собственный кэш или создавая адаптеры для других сторонних решений кэша.
Различия
Конфигурация вторичного кэша Hibernate подробно настроена в файле конфигурации, сгенерированного SessionFactory, а затем настраивается в конкретной карте таблицы-объекта.
Конфигурация вторичного кэша Mybatis подробно настроена на каждой конкретной карте таблицы-объекта, так что для различных таблиц можно настроить различные механизмы кэша. И Mybatis может поделиться той же конфигурацией и экземпляром кэша в пространстве имен, который реализован через Cache-Ref.
Сравнение двух
Поскольку Hibernate имеет хороший механизм управления для объектов запроса, пользователям не нужно заботиться о SQL. Поэтому, если грязные данные появляются при использовании вторичного кэша, система сообщит об ошибке и приглашении.
В связи с этим Mybatis требует особого ухода при использовании Cache L2. Если объем операций обновления данных не может быть полностью определен, избегайте слепого использования кэша. В противном случае появление грязных данных принесет большую скрытую опасность для нормальной работы системы.
Глава 6 Сравнение и резюме Hibernate и Mybatis
Сходство между двумя
Hibernate и Mybatis могут генерировать SessionFactory из файла конфигурации XML через SessionFactoryBuider, а затем генерировать сеанс из SessionFactory и, наконец, выполнять транзакции и операторы SQL. Среди них жизненные циклы SessionFactoryBuider, SessionFactory и Session практически одинаковы.
Как Hibernate, так и Mybatis поддерживают транзакции JDBC и JTA.
Mybatis преимущества
Mybatis может выполнять более подробную оптимизацию SQL и уменьшить поля запроса.
Mybatis легко освоить, в то время как Hibernate имеет более высокий порог.
Священные преимущества
Разработка слоя Hibernate DAO проще, чем Mybatis, что требует поддержания SQL и картирования результатов.
Hibernate поддерживает и кэширует объекты лучше, чем Mybatis, и более удобно поддерживать добавленные, удаленные, модифицированные объекты, модифицированные и проверенные объекты.
База данных Hibernate имеет хорошую переносимость, база данных Mybatis имеет плохую переносимость, а различные базы данных должны писать разные SQL.
Hibernate имеет лучший механизм кэша L2, который может использовать сторонний кэш. Сам Mybatis обеспечивает плохие механизмы кэширования.
Другое резюме
Hibernate обладает мощными функциями, хорошей базой данных нерелевантности и сильных возможностей картирования O/R. Если вы достаточно опытны в Hibernate и должным образом инкапсулируете Hibernate, то весь код слоя Persistence вашего проекта будет довольно простым, для написания очень мало кода, а скорость разработки очень быстрая и очень крутая.
Недостатком спячки состоит в том, что порог обучения не является низким, и вы должны быть опытными в нем. Вы должны иметь сильный опыт и способность проектировать картирование O/R, как сбалансировать производительность и объектную модель, а также как хорошо использовать Hibernate.
Ибатис прост в начале работы, изучению и использовании, обеспечивает автоматическую функцию привязки объекта для запросов базы данных и продолжается с хорошим опытом использования SQL. Он прекрасно подходит для проектов, которые не имеют таких высоких требований к объектной модели.
Недостаток ибати состоит в том, что структура все еще относительно проста, и функции все еще отсутствуют. Хотя код привязки данных упрощен, весь запрос базы данных фактически должен быть записан сам по себе, рабочая нагрузка относительно большая, и нелегко адаптироваться к быстрому изменению базы данных.