Mehmet Ethem SULAN :: JSF JSP JavaScript Ajax jQuery CSS ORM(Object Relation Mapping) :: JSP ile Ajax ve Persist ORM/DAO

Bu uygulamada JSP ile Persist ORM/DAO kütüphanesini ve Ajax javascript objesini kullanmaya çalıştım.
ORM(object relation mapping): Veritabanı ile ilgili işlemleri soyutlamayı sağlayan bir tekniktir. Isminden de anlaşıldığı gibi databasedeki objelere karşılık gelen bir nesneyle ilşkilendirmektir ORM. Yani createmem isminde bir veritabanı tablom varsa bu tabloya ait(tabloyla eşleşen) bir class ın olmasıdır.Örnekte id,ad,parola alanlarıma karşılık CreateMem.java sınıfında da id,ad,parola değişkenlerim var. Persistte bu tabloyu ve sınıfı kendimiz oluşturuyoruz ama hibernate gibi frameworklerde database tablolarına karşılık gelen sınıf kodunu kendisi üretiyor. Küçük uygulamalarda persisti kullanmanızı tavsiye ederim. Öğrenilmesi çok kolay ve hızlıdır. Özellikle ORM’i tam bilmeyenler ilk başta bunu öğrense daha iyi olur. ORM technical katmanında soyutlamayı sağladığından uygulamamızın veritabanına olan bağımlılığını azlatıyor. Örneğin ben mysql yerine postgresql kullanmak istediğim de fazla bir sıkıntı çekmem.Ama eğer uygulama veritabanına tam olarak bağımlıysa bunu değiştirmek biraz zor olacaktır. Kısaca hızlı, esnek, ve kolay olduğundan ORM kullanıyoruz. ORM(Hibernate gibi frameworkler) CRUD(create, retrieve, update,delete) gibi işlemleri otomatik yapıyor.
DAO(Data Access Objects): DAO design patterni ile gerçekleştirilen CRUD işlemleri soyutlaştırarak technical(veritabanı ile ilgili işlemlerin gerçekleştiği katman) katmanı diğer katmanlara olan bağımlılığı azaltır. Örneğin Rational Unified Process (RUP) ile geliştirilen uygulamlarda katmanlar arası bağımlılıkları mümkün oldukça azaltmaya çalışılır. DAO design patterni bununla ilgili bir kalıp sunuyor. Yani ben veritabanını değiştirdiğim zaman diğer katmanlar bundan etkilenmemelidir.
Persist ORM/DAO jar dosyası persist-1-1.zip dosyasının içinde persist-1.1.jar dosyasını uygulamanıza eklemeyi unutmayın.
Ajax için jquery-1.4.2.min.js dosyasını indirip uygulamanıza ekleyin.

persist orm


ConnectionInstance.java

package ethemsulan;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionInstance {
	static Connection con;
//Baglanti nesnesini geri donderir.
	public static Connection getConIsntance(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost/ethemsulan", "root", "123");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
}

CreateMem.java

package ethemsulan;
//MySQL veri tabanimda createmem isminde bir tablom var ve
//bu tabloda id(otomatik artiyor), ad, soyad kolonlar var
//Bu sinif ismi CreateMem dir.
//create_mem veya create_mems, createmems isimlerinden biri ile database icinde bir tablo olusturmalisiniz
//Yani sinif ismi ile bu sinifla eslesen database icindeki tablo ismi _  veya s takisi ile tanimlanabilir.

public class CreateMem {
    private int id;
    public int getId() {
            return id;
    }
    public void setId(int id) {
            this.id = id;
    }
    private String ad;
    public String getAd() {
            return ad;
    }
    public void setAd(String ad) {
            this.ad = ad;
    }
    private String parola;

    public String getParola() {
        return parola;
    }

    public void setParola(String parola) {
        this.parola = parola;
    }
}

DB.java

package ethemsulan;
import java.util.List;
import net.sf.persist.Persist;

public class DB {
    
    private Persist ps;
    private CreateMem m1;
    public DB() {
        ps=new Persist(ConnectionInstance.getConIsntance());
        m1=new CreateMem();
    }
    public boolean uyeKayit(String ad, String parola)
    {
        m1.setAd(ad);
        m1.setParola(parola);
        try {
//ml nesnesini veritabanina kaydeder
            ps.insert(m1);
            return true;
        } catch (Exception e) {
        }
        return false;
    }
    public boolean memControl(String gelenAd, String parola)
    {
//gelan ada ait parola dogru ise true degilse false donderir
        String verParola=ps.read(String.class, "select parola from createmem where ad=?",gelenAd);
        return (verParola.equals(parola));
    }
    public List<CreateMem> getMembers()
    {
        try {
//butun tablo bilgilerini bir listeye atiyor ve listeyi geri donderiyor
            List<CreateMem> allMems=ps.readList(CreateMem.class);
            return allMems;
        } catch (Exception e) {
        }
        return null;
    }
}

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <script language="JavaScript">
            function uyeFormKontrol() {
                with(document.uye)
                {
                    if(ad.value=='')
                    {
                        alert("Adiniz bos gecilemez");
                        return false;
                    }else if(parola.value=='' || parola2.value=='')
                    {
                        alert("Parola alani bos gecilemez");
                        return false;
                    }else{
                        return true;
                    }
                }
            }
            function girisFormKontrol()
            {
                with(document.giris)
                {
                    if(ad.value=='' || parola.value=='')
                    {
                        alert("Kul adi ve parola bos gecilemez");
                        return false;
                    }else{
                        return true;
                    }
                }
            }
        </script>
    </head>
    <body>
       
        <div style="float: right; width: 300px;">
            <form name="uye" action="KayitOl.jsp" type="POST" id="uyeForm" onsubmit="return uyeFormKontrol()">
            <table border="1">
                <tr>
                    <td>Kul adi:</td>
                    <td><input type="text" name="ad"></td>
                </tr>
                <tr>
                    <td>Parola:</td>
                    <td><input type="password" name="parola"></td>
                </tr>
                <tr>
                    <td>Parola Tekrari</td>
                    <td><input type="password" name="parola2"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Sign Up"/></td>
                </tr>
         </table>

        </form>
        </div>
        <div style="float: left; width: 100px">
            <form name="giris" action="UyeKontrol.jsp" type="POST" id="girisForm" onsubmit="return girisFormKontrol()">
            <table border="1">
                <tr>
                    <td>Kul adi:</td>
                    <td><input type="text" name="ad"></td>
                </tr>
                <tr>
                    <td>Parola:</td>
                    <td><input type="password" name="parola"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Login"/></td>
                </tr>
         </table>

        </form>
        </div>
    </body>
</html>

UyeKontrol.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- memControl() ile uye yoksa veritabanina kaydeder.--%>
<%@page import="ethemsulan.DB" %>

<%!
    private String userName;
    private String password;
    DB dbOb;
%>
<%
    dbOb=new DB();
    userName=request.getParameter("ad");
    password=request.getParameter("parola");
    if(dbOb.memControl(userName, password))
    {
        response.sendRedirect("Listele.jsp");
    }else
    {
        response.sendRedirect("index.jsp");
    }

%>

Listele.jsp
Bu sayfada Ajax ile buttona tıklandığında VeritabBilgYaz.jsp sayfasını div etiketinin arasında yazdırıyorum.Böylece sayfa yenilenmeden başka bir sayfadaki verileri çağırıyoruz. Aslında VeritabBilgYaz.jsp sayfamızda üyelerimizin id ve adlarını databaseden çekip ekrana yazıyoruz. Bunu Listele.jsp sayfasında ajax ile çağırdığımızda sayfa yenilenmeden bu çıktımız ekrana geliyor.
Çıktımız

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
<!-- src="jquery-1.4.2.min.js jquery dosyasını uygulamamiza ekliyoruz
 listelemeButtonuna tiklaninca VeritabBilgYaz.jsp dosyasini ajax ile cagiriyoruz
$.get('VeritabBilgYaz.jsp',{},function(sonuc){} -->
		<script type="text/javascript" language="javascript" src="jquery-1.4.2.min.js"></script>
		<script type="text/javascript" language="javascript">
            $(function(){
                $('#listelemeButonu').click(bilgileriListele);
            });

            function bilgileriListele()
            {
                $('#divId').html("Yükleniyor..");
                $.get('VeritabBilgYaz.jsp',{},function(sonuc){
                    $('#divId').empty().html(sonuc);
                })
            }
        </script>
    </head>
    <body>
        <div id="divId"></div>
        <p><button id="listelemeButonu">Ajax ile listele</button></p>
    </body>
</html>

VeritabBilgYaz.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- DB.java sinifinda butun uyelerin id ve adlarini dizden tabloya yaziyoruz.--%>
<%@page import="ethemsulan.DB, ethemsulan.CreateMem, java.util.List" %>
<%@page import="java.lang.Thread" %>
<%
    Thread.sleep(1000);
%>
<style type="text/css">
    table#tablom tr{background: lime;}
                 td{border: 3px solid; width: 100px; height: 10px;}
</style>

<%!
    DB objDb;
    List<CreateMem> allMems;
%>
<%
    objDb=new DB();
    allMems=objDb.getMembers();
    for(CreateMem mem: allMems){
%>
<table id="tablom">
    <tr>
        <td><%=mem.getId()%></td>
        <td><%=mem.getAd()%></td>
    </tr>
<%
}
%>
</table>

KayitOl.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- girilen uye bilgileri sisteme kayit eder--%>
<%@page import="ethemsulan.DB" %>
<%!
    private String ad;
    private String parola;
    DB objDb;
%>
<%
    objDb=new DB();
    ad=request.getParameter("ad");
    parola=request.getParameter("parola");
    if(objDb.uyeKayit(ad, parola))
    {
        out.println("Kayit başariyla gerçekleşti<br><a href='index.jsp'>Giris Yapmak icin tiklayin</a>");
    }else
    {
 %>
 <a href='javascript:history.back()'>Kayit basarisiz</a>
 <%
        return;
    }

%>

Tamblomuzun adı ve alanları

Write a Comment

Let me know what you think?