Bu yazımda sizlere Java ile bir MVC
projesinin nasıl yapıldığı,adımları ve gerekli teknolojilerinden bahsedip örnek
bir uygulama üzerinde göstereceğim.
Bu uygulama Eclipse IDE ile GlassFish
Server üzerinde MySQL veritabanı kullanılarak yapılmış olup aşağıda ki
teknolojiler kullanılmıştır.
* JSF 2 - xhtml sayfaları ve
ManagedBean ler
* PrimeFaces - View katmanı için
hazır ve pratik component kütüphanesi
* JPA 2 - Java Persistance Api
* EJB - Dao ve Facade
* MVC - Design Pattern
Proje için ilk olarak Eclipse IDE de
bir EJB projesi create etmemiz gerekmektedir. Bu işlem aşağıda ki gibi yapılır.
Açtığımız bu projenin içerisine bir
package açıp model katmanımıza ait Entity lerimizi yazacağız. Login - logout
için DB deki uyeler tablosunun Entity si aşağıda ki gibidir.
Uyeler.java
@Entity
@Table(name = "uyeler")
public class Uyeler implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "kullaniciadi")
private String kullaniciadi;
@Column(name = "sifre")
private String sifre;
@Column(name = "ad")
private String ad;
@Column(name = "soyad")
private String soyad;
@Column(name = "cinsiyet")
private String cinsiyet;
@Column(name = "ilgialanlari")
private String ilgialanlari;
@Column(name = "dogumtarihi")
private String dogumtarihi;
@Column(name = "eposta")
private String eposta;
@Column(name = "epostahaberdar")
private String epostahaberdar;
public String getKullaniciadi() {
return kullaniciadi;
}
public void setKullaniciadi(String
kullaniciadi) {
this.kullaniciadi =
kullaniciadi;
}
public String getSifre() {
return sifre;
}
public void setSifre(String sifre) {
this.sifre = sifre;
}
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
public String getSoyad() {
return soyad;
}
public void setSoyad(String soyad) {
this.soyad = soyad;
}
public String getCinsiyet() {
return cinsiyet;
}
public void setCinsiyet(String
cinsiyet) {
this.cinsiyet = cinsiyet;
}
public String getIlgialanlari() {
return ilgialanlari;
}
public void setIlgialanlari(String
ilgialanlari) {
this.ilgialanlari =
ilgialanlari;
}
public String getDogumtarihi() {
return dogumtarihi;
}
public void setDogumtarihi(String
dogumtarihi) {
this.dogumtarihi =
dogumtarihi;
}
public String getEposta() {
return eposta;
}
public void setEposta(String eposta)
{
this.eposta = eposta;
}
public String getEpostahaberdar() {
return epostahaberdar;
}
public void setEpostahaberdar(String
epostahaberdar) {
this.epostahaberdar =
epostahaberdar;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result
= prime * result
+
((kullaniciadi == null) ? 0 : kullaniciadi.hashCode());
return result;
}
@Override
public boolean
equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Uyeler
other = (Uyeler) obj;
if (kullaniciadi == null) {
if (other.kullaniciadi != null)
return false;
} else if (!kullaniciadi.equals(other.kullaniciadi))
return false;
return true;
}
}
Entity classımız ın şimdilik bir
NamedQuery si yok. Fakat projenin ilerki safhalarında ihtiyaç duyulacaktır.
Tablomuzun PK sı Entity den de
anlaşılacağı üzere "kullaniciadi" dir.
Artık DB işlemlerinin
(select,insert,update,delete) yapıldığı Dao ve Facade larımızı yazabiliriz.Fakat
öncelikle bu DAO (Database Access Object) ve Facade ın ne olduğuna bir bakalım.
DAO : Dao bir
design pattern olmak üzere kullanılan veritananına erişim ve veri depolama
işlemini daha soyutlaştırarak uygulamalarımızda ki diğer katmanların
veritabanına olan bağımlılıklarını azaltır.Dao design pattern(tasarım şablonu)
ile diğer katmanlar etkilenmeden veritabanı işlemlerimizi yapabiliriz.
Facade : Facade pattern sistemde ki
karmaşıklığı önlemekle birlikte alt sistemleri kolayca kullanabileceğimiz
interface ler sağlar. Yani sub sistemler deki interfacelerin tek bir
interfacesine facade diyoruz.
UyelerDAO.java
@Stateless
@LocalBean
public class UyelerDAO extends
UyelerDaoImpl<Uyeler> implements Serializable{
private static final long serialVersionUID = 1L;
@Override
public Uyeler
findMemberByUserName(String username) {
return super.findMemberByUserName(username);
}
}
UyelerDaoImpl.java
@Stateless
@LocalBean
public class UyelerDAO extends
UyelerDaoImpl<Uyeler> implements Serializable{
private static final long serialVersionUID = 1L;
@Override
public Uyeler findMemberByUserName(String
username) {
return super.findMemberByUserName(username);
}
}
UyelerFacade.java
@Local
public interface UyelerFacade {
public abstract Uyeler
findMemberByUserName(String username);
}
UyelerFacadeImpl.java
@Stateless
@LocalBean
public class
UyelerFacadeImpl implements UyelerFacade,Serializable {
private static final long serialVersionUID = 1L;
@EJB
UyelerDAO
uyelerDao;
@Override
public Uyeler
findMemberByUserName(String username) {
return uyelerDao.findMemberByUserName(username);
}
}
Böylece DAO , Facade ve Entity mizi
yazımış olup EJB projemizi bitirmiş oluyoruz. Yazımın ikinci kısmında dinamik
bir web projesi açıp tekrar devam edeceğim.
Hiç yorum yok:
Yorum Gönder