You are on page 1of 20

Enterprise Java Beans (EJB)

Umut Gkbayrak Ekim 2004

Problem Neden EJBye htiya Var?

Datk bir yapda mimari ihtiyac Veritaban eriim mantnn business logicten ayrlmas

EJBlere Ksa Bak

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

Message Driven Beans Access Beans

EJB zel Interface ve Snflar

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

Entity Beanlerin primary keylerine eriim iin kullanlan bir snftr.

Finder ve Select Metodlar

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 BeaneYakn Bak

Bir Entity Bean IBM ortamnda minimum 2class ve 2 interfaceden oluur. Her Entity Bean map ettii tablonun kolonlarna karlk gelen CMP Field ierir.

Bir Entity BeaneYakn Bak

Entity Beanler ilikili olduklar Container ierisindeki veritabannn bir tablosuna karlk gelirler. Bu tablodaki her bir kolon entity beande bir attribute ile ilikilendirilir.

Bir Entity BeaneYakn Bak

Entity Bean zerinde yaplan ilemler ve karlklar

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.

EJB-QLin En Belirgin Kstlar

Geriye sadece bir interface (tablodaki bir satrn karl) veya ok sayda satr dnecekse bir collection dnebilir. Geriye bir primitive type dnemez.

select count(*) as number from users


mmkn deildir.

Date karlatrma zellii standart deildir.

select * from users where date > 2004-10-15 standart implemantasyonda yoktur.

Entity Bean Tips Tricks

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.

Bir Session Beane Yakn Bak

Statefull ve Stateless iki eit session bean vardr.

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 Session Bean minimumda 1 snf ve 2 interfaceden oluur.

Bir Session Beane Yakn Bak


Session Beanlere eriim salad tm remote ve local Entity Beanlerin referanslarn eklemek gereklidir.

Client Tarafna Bak

Bir web uygulamasndan bir Entity Beane eriim yaplmamaldr. Araya bir Faad Session Bean konulmaldr. web.xml dosyasnda eriilecek Session Beanlerin referanslar yerletirilir.

Client Tarafna Bak

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; }

rnek Uygulama Mini Not Defteri

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.

rnek Uygulama Veritaban Yaps

User Tablosu

user_id (bigint) username (varchar 50) fullname (varchar 100)


note_id (bigint) User_id FK tarih (Timestamp) note (varchar 250)

Notes Tablosu

Yaplan lemler

Veritaban yaratlmas Entity Bean EJB Mapping Yaplmas Session Beanlerin yaratlmas Client tarafn hazrlanmas

You might also like