Легка альтернатива сплячому режиму? [зачинено]


113

У мене є одна програма java користувача, яка хотіла б зберігати дані в базі даних легкої ваги, таких як Derby або Sqlite. Я хотів би використовувати рівень абстракції даних у своїй програмі. Здається, сплячий режим вимагає великої кількості конфігурації і є надмірним для того, що мені потрібно. Що таке легка альтернатива сплячки?


2
Ви можете перевірити альтернативи разом із прикладом використання (та приклад конфігурації з Spring) тут: github.com/bwajtr/java-persistence-frameworks-comparing
Břetislav Wajtr

CMobileCom JPA - це легка реалізація JPA для Java та Android. Її розмір - близько 380К. Він легкий і швидкий. cmobilecom.com
Іван

Відповіді:


142

У режимі hibernate потрібна конфігурація поруч із нулем, якщо ви використовуєте примітки. Він навіть може автоматично розкрити картографичну квасолю на уроці! Я не бачу жодної альтернативи їй як з точки зору простоти, так і з точки зору потужності.

Він також може виявити себе як JPA, що (IMHO) ще простіше.


32
поруч з нулем не дорівнює нулю.
njzk2

12
також потрібно багато зовнішніх бібліотек, спробуйте використовувати його на android: P
sherif

4
Я намагався знайти простішу альтернативу сплячого. В особистому проекті я використав MyBatis (яке жахливе ім’я). Це було набагато більше роботи, ніж сплячий. Hibernate дійсно економить багато кодування SQL та допомагає у відносинах батько-дитина. Я також переглянув кілька ORM стилів ActiveRecord для Java. Жоден не здавався зрілим чи легшим, ніж сплячий. Отже, я повертаюся до Зимової сплячки.
девданке

56
питання не було про АЛЬТЕРНАТИВУ?
Łukasz Gruner

8
Зимова сплячка не є легкою альтернативою Hiberernate
cosbor11

55

Моя бібліотека ORMLite - одна з таких альтернатив. Він підтримує MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB і Sqlite, і їх можна легко поширити на інші. Він використовує примітки для налаштування класів, хорошої підтримки Spring, гнучких конструкторів запитів тощо.


OrmLite дійсно виглядає перспективно! Але чи живий цей проект? Немає нової версії більше року, немає відповіді на пошук запитів / проблем на Github.
Стефан

3
Версія 5.0 була випущена в червні 2016 року.
Лаурі Лаанті

Версія 5.1 вийшла 19.02.2018. Але він взагалі не порівнян зі сплячим режимом, і деякі програми анотацій JPA не працюють належним чином.
M-

"порівнянна зі сплячим режимом"? Вони обидва ORM, але в іншому випадку сильно відрізняються. Що стосується реалізації JPA, будь ласка, заповніть звіт про помилки, якщо ви знайдете щось @ M-Razavi.
Сірий

31

Він все ще потребує конфігурації XML, але подивіться на MyBatis (раніше iBatis) .


iBatis дуже легкий. Ви можете легше визначити та керувати своїм SQL для відображення об’єктів.
Берлін Браун

... доведеться голосувати за iBatis, хоча пам’ятайте, що це не альтернатива ORM, оскільки вона не намагається конкурувати з любителями Hibernate. Це трохи інший вид тварини, але підходить для того, що ви шукаєте, з точки зору ваги.
вектор

1
Тепер це MyBatis, що залишилося: mybatis.org
Владислав Раструсний

3
Я думаю, що XML в i / MyBatis насправді є перевагою, оскільки він зберігає складні запити у форматі, який можна легко скопіювати на консоль SQL для тестування.
Пітер Тіллеманс

22

jOOQ поставляється з вільним DSL, що імітує SQL безпосередньо на Java, як побічний ефект для його основних цілей:

  • Генерація вихідного коду
  • Повна підтримка стандартних SQL, включаючи функції мови SQL, такі як UNION, вкладені SELECT, усі типи JOIN, псевдонім (наприклад, для самостійного приєднання) тощо
  • Широка підтримка нестандартних SQL, включаючи UDT, збережені процедури, функції, що стосуються постачальника тощо.

Про jOOQ читайте в цій статті: http://java.dzone.com/announcements/simple-and-intuitive-approach , або відвідуйте веб-сайт безпосередньо: http://www.jooq.org

(Відмова, я працюю в компанії, що стоїть за jOOQ)


3
jOOQ скелі! Ми реалізували з ним широкомасштабний сервіс ETL і не могли бути щасливішими. Я використовував iBATIS, і jOOQ дає всі ті ж переваги низькорівневого SQL без патрубок XML та відсутності безпеки типу.
spieden

3
Я забув згадати одну з найкращих особливостей jOOQ: Складні та / або динамічно генеровані запити можна збирати контрольованим чином і перевіряти компілятором Java, врятуючи вас від усіх тих неоднозначних помилок синтаксису, що викидають, та забезпечує регресію часу компіляції. покриття, коли схема змінюється під вами.
spieden

JOOQ є дивовижним, але очевидно, що зараз він не є безкоштовним для Oracle і Sybase, тому багато людей уникають цієї рамки і використовують, як MyBatis
Makky

@Makky: Дякую за відгук. Я сподіваюсь, що ви пам’ятаєте про фактичні пропозиції щодо цінності і що ви не збираєтесь переходити на зовсім інші рамки лише на основі того, що одне є вільним, а інше - ні. Витрати на технічне обслуговування та міграцію, які це спричиняло б у вашому програмному забезпеченні, є непомірними та далеко виходять за будь-яку розумну комерційну ліцензію ...
Лукаш Едер

15

Apache Commons DBUtils виймає значну частину повторюваних бурхливих робіт з програмування JDBC. Він вимагає невеликої конфігурації і легко навчається. Це не ORM-фреймворк (таким чином, як згадується сплячий режим та інші рамки), але він автоматизує відображення стовпців SELECT в поля учасників Java, а також інші повторювані завдання програмування JDBC. Це звичайно легка вага.


12

Ви можете подивитися на Ebean ORM . - Без сеансів - ледаче завантаження просто працює - Простіший API для використання та навчання.


чи сумісний він із SQLite та Android?
endryha

Додано підтримку SQLite. Я ще не пробував його на Android.
Роб Біграйв

9

Кайєнна добре мені послужила. Відносно легко зрозуміти і підняти його та працювати. Мені здається, що зворотна інженерна частина особливо чарівна. Конфігурацію можна виконати за допомогою GUI.


6

Я можу запропонувати apache empire-db. http://incubator.apache.org/empire-db/

Apache Empire-db - компонент збереження реляційних даних із відкритим кодом, який дозволяє визначити динамічні запити від постачальника баз даних, а також безпечне та просте пошуку та оновлення даних. Порівняно з більшістю інших рішень, таких як Hibernate, TopLink, iBATIS або JPA, компанія Empire-db застосовує значно інший підхід, приділяючи особливу увагу безпеці під час збирання , зменшенню надмірностей та покращенню продуктивності розробників.

Приклад:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

Можливо, я трохи запізнююся на вечірку, але я випустив ActiveJDBC в 2010 році, що є реалізацією ORM шаблону ActiveRecord, в 10 разів легший, ніж Hibernate в залежності, принаймні вдвічі швидший під час виконання, і вимагає нульової конфігурації або примітки.


1

Можливо, ви захочете поглянути на престилера (у sourceforge). Дещо більш легкий підхід до наполегливості. Або ви думали над тим, щоб звітувати проти БД?



1

Я створив сормулу як альтернативу ОРМ у важкій вазі. Це CRUD-готовий, POJO-зручний, простий у використанні, конфігурації та розумінні. Можливе використання нульової конфігурації. www.sormula.org


-2

Kiteframework - це також дуже світла рамка. Він забезпечує майже всю операцію db з мінімальними конфігураціями.

http://deipakgarg.github.com/Kite-ORM/

Розкриття інформації: Я є автором цього проекту


3
Ласкаво просимо до переповнення стека! Дякуємо, що опублікували свою відповідь! Будь ласка, уважно прочитайте FAQ щодо самореклами . Також зауважте, що Ви зобов’язуєтесь публікувати відмову щоразу, коли Ви посилаєтесь на власний сайт / продукт.
Ендрю Барбер

2
це не в розробці, жодного нового поточного випуску від автора, останній очікуваний реліз був у 2012 році.
Барун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.