Benzer sorular gördük:
- JavaBean ve POJO arasındaki fark nedir?
- POJO (Düz Eski Java Nesnesi) ve DTO (Veri Aktarım Nesnesi) Arasındaki Fark Nedir?
Lütfen bana kullanıldıkları bağlamları anlatır mısınız? Yoksa onların amacı?
Benzer sorular gördük:
Lütfen bana kullanıldıkları bağlamları anlatır mısınız? Yoksa onların amacı?
Yanıtlar:
JavaBean, Sun tarafından tanımlanan JavaBeans kurallarına uyan bir sınıftır . Wikipedia, JavaBeans'in ne olduğuna dair oldukça iyi bir özete sahiptir :
JavaBeans, Java için bir oluşturucu aracında görsel olarak değiştirilebilen yeniden kullanılabilir yazılım bileşenleridir. Pratik olarak, Java programlama dilinde yazılmış ve belirli bir kurala uyan sınıflardır. Birçok nesneyi tek bir nesneye (fasulye) kapsüllemek için kullanılırlar, böylece birden fazla tekil nesne yerine tek bir fasulye nesnesi olarak geçirilebilirler. JavaBean, serileştirilebilen, boş bir yapıcıya sahip olan ve alıcı ve ayarlayıcı yöntemlerini kullanarak özelliklere erişime izin veren bir Java Nesnesidir.
Bir JavaBean sınıfı olarak işlev görmek için, bir nesne sınıfının yöntem adlandırma, oluşturma ve davranışla ilgili belirli kurallara uyması gerekir. Bu kurallar, JavaBeans'i kullanabilen, yeniden kullanabilen, değiştirebilen ve bağlayabilen araçlara sahip olmayı mümkün kılar.
Gerekli sözleşmeler:
- Sınıfın genel bir varsayılan yapıcısı olmalıdır. Bu, düzenleme ve etkinleştirme çerçevelerinde kolay örneklemeye olanak tanır.
- Sınıf özelliklerine, standart bir adlandırma kuralını izleyerek get, set ve diğer yöntemler (erişimci yöntemleri ve mutasyon aracı yöntemleri) kullanılarak erişilebilir olmalıdır. Bu, birçoğu çeşitli özellik türleri için özel editörler içeren, çerçeveler içinde fasulye durumunun kolay otomatik olarak denetlenmesine ve güncellenmesine olanak tanır.
- Sınıf serileştirilebilir olmalıdır. Bu, uygulamaların ve çerçevelerin, çekirdeğin durumunu VM ve platformdan bağımsız bir şekilde güvenilir bir şekilde kaydetmesini, depolamasını ve geri yüklemesini sağlar.
Bu gereksinimler, arabirimler uygulamak yerine büyük ölçüde kurallar olarak ifade edildiğinden, bazı geliştiriciler JavaBeans'i belirli adlandırma kurallarını izleyen Düz Eski Java Nesneleri olarak görür.
Düz Eski Java Nesnesi veya POJO, başlangıçta javax.ejb
, ağır EJB 2.x'in (özellikle Varlık Fasulyeleri, Vatansız Oturum Fasulyeleri o kadar kötü IMO değildir) aksine, herhangi bir arabirim uygulamayan basit bir hafif Java nesnesini belirtmek için tanıtılan bir terimdir . Bugün, bu terim, fazladan bir şey olmayan herhangi bir basit nesne için kullanılmaktadır. Wikipedia yine POJO'nun tanımlanmasında iyi bir iş çıkarıyor :
POJO, Plain Old Java Object'in kısaltmasıdır. Adı, söz konusu nesnenin özel bir nesne değil, özellikle bir Enterprise JavaBean (özellikle EJB 3'ten önce) değil, sıradan bir Java Nesnesi olduğunu vurgulamak için kullanılır. Terim, Eylül 2000'de Martin Fowler, Rebecca Parsons ve Josh MacKenzie tarafından yapıldı:
"İnsanların sistemlerinde neden normal nesneleri kullanmaya karşı bu kadar karşılandıklarını merak ettik ve bunun basit nesnelerin süslü bir adı olmadığı için olduğu sonucuna vardık. Bu yüzden onlara bir tane verdik ve çok iyi yakalandık."
Bu terim, telefondaki POTS (Düz Eski Telefon Hizmeti) ve C ++ 'da tanımlanan ancak yalnızca C dili özelliklerini kullanan PODS (Düz Eski Veri Yapıları) gibi süslü yeni özellikler kullanmayan teknolojiler için eski terimlerin desenini sürdürmektedir. ve Perl'de POD (Düz Eski Belgeler).
Terim, karmaşık nesne çerçevelerine zıt olan yaygın ve kolay anlaşılır bir terime duyulan ihtiyaç nedeniyle büyük olasılıkla yaygın kabul görmüştür. JavaBean, serileştirilebilen, bağımsız değişken yapıcısı olmayan ve alıcı ve ayarlayıcı yöntemlerini kullanarak özelliklere erişim sağlayan bir POJO'dur. Enterprise JavaBean tek bir sınıf değil, tüm bileşen modelidir (yine EJB 3, Enterprise JavaBeans'in karmaşıklığını azaltır).
POJO'ları kullanan tasarımlar daha yaygın olarak kullanıldıkça, POJO'lara çerçevelerde kullanılan bazı işlevleri ve hangi işlevsellik alanlarının gerçekten gerekli olduğu konusunda daha fazla seçenek sunan sistemler ortaya çıkmıştır. Hazırda Beklet ve İlkbahar örneklerdir.
Bir Değer Nesnesi veya VO, java.lang.Integer
bu tutma değerleri (dolayısıyla değer nesneleri) gibi bir nesnedir . Daha resmi bir tanım için, genellikle Martin Fowler'in Value Object tanımına başvuruyorum :
Kurumsal Uygulama Mimarisi Kalıplarında Değer Nesnesini Para veya tarih aralığı nesnesi gibi küçük bir nesne olarak tanımladım. Temel özellikleri, referans anlambiliminden ziyade değer anlambilimini takip etmeleridir.
Onlara genellikle eşitlik kavramları kimliğe dayalı olmadığı için söyleyebilirsiniz, bunun yerine tüm alanları eşitse iki değer nesnesi eşittir. Tüm alanlar eşit olsa da, bir alt küme benzersizse tüm alanları karşılaştırmanız gerekmez; örneğin, para birimi nesneleri için para birimi kodları eşitliği test etmek için yeterlidir.
Genel bir sezgisel tarama, değer nesnelerinin tamamen değişmez olması gerektiğidir. Bir değer nesnesini değiştirmek istiyorsanız, nesneyi yenisiyle değiştirmelisiniz ve değer nesnesinin değerlerini güncelleştirmesine izin verilmemelidir - güncellenebilir değer nesneleri takma sorunlarına yol açar.
İlk J2EE literatüründe Veri Aktarımı Nesnesi dediğim farklı bir kavramı tanımlamak için değer nesnesi terimi kullanılmıştır . O zamandan beri kullanımlarını değiştirdiler ve bunun yerine Aktarım Nesnesi terimini kullandılar.
Wiki'de ve Dirk Riehle'da değer nesneleri hakkında daha iyi malzemeler bulabilirsiniz .
Veri Aktarım Nesnesi veya DTO, EJB ile tanıtılan (anti) bir kalıptır. Fikir EJB'lerde çok sayıda uzak arama yapmak yerine, ağ üzerinden aktarılabilecek bir değer nesnesindeki verileri kapsüllemekti: bir Veri Aktarım Nesnesi. Wikipedia'nın Veri Aktarım Nesnesi hakkında iyi bir tanımı vardır :
Daha önce değer nesneleri veya VO olarak bilinen veri aktarım nesnesi (DTO), yazılım uygulama alt sistemleri arasında veri aktarımı için kullanılan bir tasarım modelidir. DTO'lar genellikle bir veritabanından veri almak için veri erişim nesneleriyle birlikte kullanılır.
Veri aktarım nesneleri ile iş nesneleri veya veri erişim nesneleri arasındaki fark, bir DTO'nun kendi verilerinin (erişimciler ve mutasyoncular) depolanması ve alınması dışında herhangi bir davranışının olmamasıdır.
Geleneksel bir EJB mimarisinde, DTO'lar iki amaca hizmet eder: ilk olarak, varlık çekirdeklerinin serileştirilememesi sorunu etrafında çalışırlar; ikincisi, görünüm tarafından kullanılacak tüm verilerin denetimi sunum katmanına döndürmeden önce DTO'lara getirildiği ve sıralandığı bir derleme aşamasını dolaylı olarak tanımlarlar.
Yani, birçok insan için DTO'lar ve VO'lar aynı şeydir (ancak Fowler, gördüğümüz gibi başka bir şey ifade etmek için VO'ları kullanır). Çoğu zaman, JavaBeans kurallarına uyarlar ve bu nedenle de JavaBeans'dir. Ve hepsi POJO'lar.
class SomeClass { public String foo;public String bar; }
çok karmaşık mantığa sahip bir sınıf içine aktarmak için oluşturulmuş bir uygunluk sınıfım varsa, bir JavaBean olmadığından emin olun, değiştirilebilir olduğu için bir VO olamaz, DTO? ancak, herhangi bir türden uzaktan çağırma için hedeflenmemiştir. Bir POJO olarak düşünülebilir mi?
DTO ve VO
DTO - Veri aktarım nesneleri, katmanlar ve katmanlar arasında veri taşımak için kullanılan veri kaplarıdır.
Analoji:
Kullanıcı adı, şifre ve e-posta kimliği özelliklerine sahip basit Kayıt formu.
- Bu form RegistrationServlet dosyasında gönderildiğinde, tüm nitelikleri, görünüm katmanından iş katmanına, nitelikleri java fasulyesine ve sonra DAO'ya veya kalıcılık katmanına geçirdiğinizde alırsınız.
- DTO'lar, öznitelikleri görünüm katmanından iş katmanına ve son olarak kalıcılık katmanına aktarmaya yardımcı olur.
DTO esas olarak ağ üzerinden verimli bir şekilde veri aktarımı için kullanıldı, JVM'den başka bir JVM'ye bile olabilir.
DTO'lar genellikle java.io.Serializable
- JVM üzerinden veri aktarmak için kullanılır.
VO - Bir Değer Nesnesi [1] [2] sabit bir veri kümesini temsil eder ve Java numaralandırmasına benzer. Bir Değer Nesnesinin kimliği, nesne kimliklerinden ziyade durumlarına dayanır ve değişmezdir. Gerçek bir dünya örneği Color.RED, Color.BLUE, SEX.FEMALE vb.
POJO ve JavaBeans Karşılaştırması
[1] Bir POJO'nun Java-Beanness özel özelliklerine, JavaBeans kurallarına uyan genel alıcılar ve ayarlayıcılar aracılığıyla erişilebilmesidir. Örneğin
private String foo;
public String getFoo(){...}
public void setFoo(String foo){...};
[2] JavaBeans Serializable uygulamalıdır ve argüman yapıcı olmamalıdır, oysa POJO'da bu kısıtlamalar yoktur.
Temel olarak,
DTO: "Veri aktarım nesneleri" yazılım mimarisinde ayrı katmanlar arasında seyahat edebilir.
VO: "Değer nesneleri", Tamsayı, Para vb.
POJO: Özel bir nesne olmayan Düz Eski Java Nesnesi.
Java Beans: Java Class
serileştirilebilir olması, no-arg
her alan için bir yapıcı ve bir alıcı ve ayarlayıcıya sahip olmasını gerektirir
Java Fasulyeleri EJB'lerle aynı şey değildir.
JavaBeans şartname Java 1.0 Java VB gibi görünüyordu bir IDE manipüle edilecek nesneleri izin Sun'ın girişimiydi. "Java Beans" olarak nitelendirilen nesneler için kurallar koyuldu:
EJB'ler daha sonra geldi. Dağıtılmış bileşenleri ve işlemsel bir modeli birleştirerek, iş parçacıklarını, havuzu, yaşam döngüsünü yöneten ve hizmetler sağlayan bir kapta çalışırlar. Java Fasulyeleri'nden çok uzaklar.
DTO'lar Java bağlamında ortaya çıktı, çünkü insanlar EJB 1.0 spesifikasyonunun veritabanıyla çok "konuşkan" olduğunu keşfettiler. Her veri öğesi için bir gidiş dönüş yapmak yerine, insanlar bunları Java Fasulyesi'ne toplu olarak paketleyip etrafına gönderirdi.
POJO'lar EJB'lere karşı bir reaksiyondu.
POJO : Başka bir java dosyasını (sınıfı) genişletmeyen veya uygulamayan bir java dosyasıdır (sınıf).
Bean : Tüm değişkenlerin özel, yöntemlerin ortak olduğu ve değişkenlere erişmek için uygun alıcılar ve ayarlayıcıların kullanıldığı bir java dosyasıdır (sınıf).
Normal sınıf : Genel / özel / varsayılan / korumalı değişkenlerden oluşabilen ve başka bir java dosyasını (sınıf) genişletebilen veya uygulayamayan bir java dosyasıdır (sınıf).
Hakkında İlk Konuşma
Normal Sınıf - bu, herhangi bir sınıfın normalde java'da tanımlandığı anlamına gelir, farklı yöntem özellikleri vb.
Oluşturduğunuz anlamına gelir . .
ve ondan sonra son POJO hakkında
POJO - POJO , herhangi bir hizmeti olmayan sınıfın yalnızca varsayılan bir yapıcı ve özel özelliğe sahip olması ve bu değere karşılık gelen ayarlayıcı ve alıcı yöntemlerini ayarlama özelliğidir. Düz Java Nesnesinin kısa biçimidir.