Hazırda Bekletme'ye hafif bir alternatif mi? [kapalı]


113

Derby veya Sqlite gibi hafif bir veritabanında veri depolamak istediğim tek kullanıcılı bir java programım var. Programımda bir veri soyutlama katmanı kullanmak istiyorum. Hazırda bekletme, çok fazla yapılandırma gerektiriyor gibi görünüyor ve ihtiyacım olan şey için gereğinden fazla. Hibernate'in hafif alternatifleri nelerdir?


2
Örnek kullanımla (ve Spring ile örnek yapılandırmayla) birlikte alternatifleri buradan kontrol edebilirsiniz: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr

CMobileCom JPA, hem Java hem de Android için hafif bir JPA uygulamasıdır. Boyutu yaklaşık 380K'dır. Hafif ve hızlıdır. cmobilecom.com
John

Yanıtlar:


142

Ek açıklamalar kullanıyorsanız, hazırda bekletme sıfır yapılandırmanın yanında gerektirir. Hatta sınıf yolunda eşlenmiş çekirdekleri otomatik olarak keşfedebilir! Ben hem basitlik bu siteye herhangi bir alternatif görmüyorum ve bakış güç noktası.

Ayrıca kendisini JPA olarak gösterebilir ki bu (IMHO) daha da basittir.


32
sıfırın yanında sıfır değil.
njzk2

12
ayrıca çok sayıda harici kütüphaneye ihtiyacı var android üzerinde kullanmayı deneyin: P
sherif

4
Hazırda Bekletme'ye daha basit bir alternatif bulmaya çalıştım. Kişisel bir projede MyBatis kullandım (ne korkunç bir isim). Hibernate'den çok daha fazla işti. Hibernate gerçekten çok fazla SQL kodlaması kaydeder ve ebeveyn-çocuk ilişkilerine yardımcı olur. Java için birkaç ActiveRecord tarzı ORM'ye de baktım. Hiçbiri olgun ya da Hibernate'den daha kolay görünmüyordu. Yani, Hazırda Bekletme'ye geri dönüyorum.
devdanke

56
soru bir ALTERNATİF ile ilgili değil miydi?
Łukasz Gruner

8
Hibernate, Hiberernate'in hafif bir alternatifi değil
cosbor11

55

Benim ORMLite kütüphane böyle bir alternatiftir. MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB ve Sqlite'ı destekler ve diğerlerine kolayca genişletilebilir. Sınıfları, iyi Spring desteğini, esnek sorgu oluşturucuyu vb. Yapılandırmak için ek açıklamalar kullanır.


OrmLite gerçekten umut verici görünüyor! Ama bu proje hala yaşıyor mu? Bir yıldan uzun süredir yeni sürüm yok, Github'da istekleri / sorunları almak için yanıt yok.
Stefan

3
Sürüm 5.0, Haziran 2016'da yayınlandı.
Lauri Laanti

Sürüm 5.1, 19.02.2018 tarihinde piyasaya sürüldü. Ancak, Hibernate ile hiç karşılaştırılamaz ve bazı JPA ek açıklama uygulamaları düzgün çalışmaz.
M-Razavi

"Hazırda Bekletme ile karşılaştırılabilir mi"? Her ikisi de ORM'dir, ancak bunun dışında çok farklıdır. JPA uygulamaları açısından, @ M-Razavi'de bir şey bulursanız lütfen bir hata raporu doldurun.
Gray

31

Hala XML yapılandırması gerektirir, ancak MyBatis'e (eski adıyla iBatis) bakın .


iBatis çok hafiftir. SQL-nesne eşlemenizi daha kolay tanımlayabilir ve kontrol edebilirsiniz.
Berlin Brown

... iBatis'e oy vermek zorundasınız, unutmayın ki bu bir ORM alternatifi değil çünkü Hibernate gibileriyle rekabet etmeye çalışmıyor. Biraz farklı bir hayvan ama ağırlık olarak aradığınız şeye uyuyor.
vektör

1
Şimdi kalan MyBatis
Vladislav Rastrusny

3
İ / MyBatis'teki XML'in aslında bir avantaj olduğunu düşünüyorum çünkü karmaşık sorguları test etmek için kolayca bir SQL konsoluna kopyalanabilen bir formatta tutuyor.
Peter Tillemans

22

jOOQ , ana hedefleri için bir yan etki olarak doğrudan Java'da SQL simülasyonu yapan akıcı bir DSL ile birlikte gelir:

  • Kaynak kodu üretimi
  • UNION'lar, yuvalanmış SELECT'ler, her tür JOIN, takma ad (örn. Kendi kendine birleştirmeler için) gibi SQL dili özelliklerini içeren standart SQL için tam destek
  • UDT'ler, depolanmış prosedürler, satıcıya özel işlevler vb. Dahil olmak üzere standart olmayan SQL için geniş destek.

Bu makalede jOOQ hakkında okuyun: http://java.dzone.com/announcements/simple-and-intuitive-approach veya doğrudan web sitesini ziyaret edin: http://www.jooq.org

(Feragatname, jOOQ'un arkasındaki şirket için çalışıyorum)


3
jOOQ kayalar! Onunla büyük ölçekli bir ETL hizmeti uyguladık ve daha mutlu olamazdık. İBATIS kullandım ve jOOQ, XML tomarları ve tür güvenliği eksikliği olmadan düşük seviyeli SQL'in tüm avantajlarını sağlıyor.
spieden

3
JOOQ'nun en iyi özelliklerinden birinden bahsetmeyi unuttum: Karmaşık ve / veya dinamik olarak oluşturulmuş sorgular kontrollü bir şekilde birleştirilebilir ve Java derleyicisi tarafından doğrulanabilir, bu da sizi veritabanlarının attığı tüm bu belirsiz sözdizimi hatalarından kurtarır ve derleme zamanı regresyonu sağlar. altınızda şema değiştiğinde kapsam.
spieden

JOOQ harika ama şu anda Oracle ve Sybase için ücretsiz değil, bu yüzden pek çok insan bu çerçeveden kaçıyor ve
MyBatis

@Makky: Geri bildiriminiz için teşekkürler. Umarım gerçek değer önermelerini aklınızda tutarsınız ve sadece birinin özgür, diğerinin olmadığı gerçeğine dayanarak tamamen farklı bir çerçeveye geçmeyeceksiniz. Bu neden olur bakım maliyeti ve göç senin yazılım ... yasaklayıcı ve kadar herhangi bir makul ticari lisansa ötesinde
Lukas Eder

15

Apache Commons DBUtils , JDBC programlamasının tekrarlayan işlerinin çoğunu alır. Çok az yapılandırma gerektirir ve öğrenmesi kolaydır. Bir ORM çerçevesi değildir (Hibernate ve burada bahsedilen diğer çerçeveler gibi), ancak SELECT sütunlarının Java üye alanlarına ve diğer tekrarlayan JDBC programlama görevlerine eşlenmesini otomatikleştirir. Kesinlikle hafif.



9

Cayenne bana iyi hizmet etti. Anlaması ve çalıştırması nispeten kolaydır. Tersine mühendislik kısmını özellikle çekici buluyorum. Yapılandırma bir GUI ile yapılabilir.


6

Apache empire-db'yi önerebilirim. http://incubator.apache.org/empire-db/

Apache Empire-db, veritabanı satıcısından bağımsız dinamik sorgu tanımının yanı sıra güvenli ve basit veri alma ve güncelleme sağlayan bir Açık Kaynak ilişkisel veri kalıcılık bileşenidir. Örneğin Hibernate, TopLink, iBATIS veya JPA uygulamaları gibi diğer çözümlerin çoğuyla karşılaştırıldığında Empire-db, derleme zamanı güvenliğine , azaltılmış fazlalıklara ve geliştirilmiş geliştirici üretkenliğine özel bir odaklanma ile oldukça farklı bir yaklaşım benimser .

Bir örnek:

// 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

Partiye biraz geç kalmış olabilirim, ancak ActiveRecord modelinin ORM uygulaması olan ActiveJDBC'yi 2010 yılında piyasaya sürdüm , bağımlılıklarda Hibernate'ten 10 kat daha hafif, çalışma zamanında en az iki kat daha hızlı ve sıfır yapılandırma gerektiriyor veya ek açıklamalar.


1

Prevayler'a (sourceforge'da) bir göz atmak isteyebilirsiniz. Kalıcılığa biraz daha hafif bir yaklaşım. Yoksa DB'ye karşı haber yapmayı mı düşünüyordun?



1

Oluşturduğum sormula ağırsıklet orm en alternatif olarak. CRUD'a hazır, POJO dostu, kullanımı, yapılandırması ve anlaşılması basit. Sıfır konfigürasyon kullanımı mümkündür. www.sormula.org


-2

Kiteframework ayrıca çok hafif bir orm çerçevesidir. Minimal konfigürasyonlarla neredeyse tüm db işlemlerini sağlar.

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

Açıklama: Bu projenin yazarıyım


3
Stack Overflow'a hoş geldiniz! Cevabınızı gönderdiğiniz için teşekkürler! Lütfen Kendini Tanıtma ile ilgili SSS'yi dikkatlice okuduğunuzdan emin olun . Ayrıca , kendi sitenize / ürününüze her bağlandığınızda bir sorumluluk reddi beyanı göndermeniz gerektiğini unutmayın .
Andrew Barber

2
geliştirme aşamasında değil, yazarın yeni güncel sürümü yok, beklenen son sürüm 2012 idi.
Barun
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.