Professional Documents
Culture Documents
Enterprise Java Beans (EJB) : Umut Gökbayrak Ekim 2004
Enterprise Java Beans (EJB) : Umut Gökbayrak Ekim 2004
Datk bir yapda mimari ihtiyac Veritaban eriim mantnn business logicten ayrlmas
Entity Beans
Veritaban map etme vazifesi grr. Kalc objelerdir. Network tabanldr Genelde entity beanlere Facade vazifesi grr. Uygulamalar (console/web) entity beanlere direk eriim salamak yerine session beanler zerinden ilemlerini gerekletirir. Kalc objeler deillerdir. Network tabanldr.
Session Beans
Remote Interface
Remote interface EJBnin i mantn sunan metodlarn tanmland interfacedir. EJBnin merkezi bir sistemde olduu durumda remote eriim amal yaratlr. EJB 2.0 ile birlikte gelmitir. Remote interface ile ayn amac karlar. EJB ve uygulama (console/web) ayn makine zerindeyse performans amal tercih edilir. EJBnin kayt defteridir. EJBnin create, remove gibi metodlarn sunar. Ayrca finder metodlarn tanmlarn da ierir.
Local Interface
Home Interface
Key Snf
Sadece Entity Beanlerin finder ve select metodlar vardr. Veritabannda SQL metodlar ile arama yapmak yerine bir finder metod interface yaratlr. Finder metod geriye bir local interface dner. Geriye dnen local interface, o entity beanin map ettii DB tablosunun bir satrdr.
Bir Entity Bean IBM ortamnda minimum 2class ve 2 interfaceden oluur. Her Entity Bean map ettii tablonun kolonlarna karlk gelen CMP Field ierir.
Entity Beanler ilikili olduklar Container ierisindeki veritabannn bir tablosuna karlk gelirler. Bu tablodaki her bir kolon entity beande bir attribute ile ilikilendirilir.
setUsername -> update User set username = ? ejbCreate -> insert into User values (....) remove -> delete from User where .... getPrimaryKey -> select userId from User ....
EJB-QL
EJB-QL, SQL benzeri bir sorgulama dilidir. Her finder metodu iin bir EJB-SQL sorgusu yazlr, geriye sadece bir interface veya interfacelerden oluan bir collection dner.
EJB Relationships
DBdeki tablolardaki foreign keyler Entity Beanler yaratldktan sonra 1-1 veya 1-N relationshiplere dnr.
Geriye sadece bir interface (tablodaki bir satrn karl) veya ok sayda satr dnecekse bir collection dnebilir. Geriye bir primitive type dnemez.
select * from users where date > 2004-10-15 standart implemantasyonda yoktur.
Veritabannda hi bir kolon ismi i harfi ile balamamaldr. Veritabanndaki kolon isimleri ierisinde ingilizce dahi olsa byk I ve kk i harfi olmamaldr. Garantiye almak iin kolon isimleri DBde case sensitive yaratlrsa faydal olur. Foreign Keyler EJBler yaratlmadan DBde yaratlmaldr. Triggerlar ie yaramaz, EJBler bunlar dikkate almadan ilem yapar. EJBler stored procedure desteklemez.
Statefull Session Bean : Kendi ierisinde bir attribute tutan fakat bir DB ile ilikilenmesi gerekli olmayan veri yaplardr. Stateless Session Bean : erisinde hi attribute bulunmayan sadece metodlardan oluan beanlerdir.
Bir web uygulamasndan bir Entity Beane eriim yaplmamaldr. Araya bir Faad Session Bean konulmaldr. web.xml dosyasnda eriilecek Session Beanlerin referanslar yerletirilir.
HomeFactory Pattern
EJBlere client zerinden erimek ok masrafldr. Bir Singleton class ile eriim yapp cacheleme yapmak gerekir.
InitialContext = new InitialContext(); Object nsObject = initialContext.lookup(new StringBuffer("java:comp/env/").append(ejbRef).toString()); if (nsObject instanceof EJBLocalHome) { return nsObject; } else{ EJBHome ejbHome=(EJBHome) PortableRemoteObject.narrow((org.omg.CORBA.Object)nsObject, EJBHome.class); return ejbHome; }
Bir kullanc username ve password girerek bir formdan login olur Login olduktan sonra kullancnn daha nceden alm olduu notlar listelenir. Notlarn yannda delete linki vardr. Buraya tklayarak istedii notu siler. Yeni Not Ekle linkine tklayarak yeni bir not ekler.
User Tablosu
Notes Tablosu
Yaplan lemler
Veritaban yaratlmas Entity Bean EJB Mapping Yaplmas Session Beanlerin yaratlmas Client tarafn hazrlanmas