http://pl-sql-tutorial.blogspot.com/
http://mnsinger.wordpress.com/category/oracle/
http://oracleonline.info/
Oracle Teknolojileri, Weblogic, SOA Suite, Java, Kurumsal Veri Sözlüğü, API Gateway, API Manager, Veri Sözlüğü, SOAGEN, Metanizer, Apinizer
31 Mayıs 2011 Salı
26 Mayıs 2011 Perşembe
25 Mayıs 2011 Çarşamba
dbms_output.put_line kisa formasi
Ozelliklede PL/SQL`de console biseyler yazdirmak icin, DBMS_OUTPUT.PUT_LINE(); gibi uzun bi kod yazmamiz gerekiyor, ancak bu yolu yeni bir procedure yazarak asabiliriz.. Hemde cok basit bir sekilde...
CREATE OR REPLACE PROCEDURE yaz(
cn_text IN VARCHAR2 )
IS
BEGIN
SYS.DBMS_OUTPUT.PUT_LINE(cn_text);
END yaz;
CREATE OR REPLACE PROCEDURE yaz(
cn_text IN VARCHAR2 )
IS
BEGIN
SYS.DBMS_OUTPUT.PUT_LINE(cn_text);
END yaz;
kullanimi :
BEGIN
yaz('Hello World');
END;
SQL: ALTER TABLE Statement
ALTER TABLE deyimi, tabloyu yeniden adlandirma, colon ekleme, silme, degistirmek icin kullanilir. Asagida, ALTER TABLE deyimi ile birlikte neler yapabiliriz onlari gorelim.
Temel olarak bir tablonun adini degistirmek:
ALTER TABLE table_name RENAME TO new_table_name;Ornek :ALTER TABLE students RENAME TO ogrenciler;
Tabloya kolon(lar) ekleme :
ALTER TABLE table_name ADD column_name column-definition;Ornek :ALTER TABLE student ADD email varchar2(50);
Kolonlar ekleme :
ALTER TABLE table_name | ||
ADD ( | column_1 | column-definition, |
column_2 | column-definition, | |
... | ||
column_n | column_definition ); |
Ornek :
ALTER TABLE student | ||
ADD ( | first_name | varchar2(50), |
city | varchar2(45) ); |
Kolon bilgilerini degistirme :
ALTER TABLE table_name MODIFY column_name column_type;
Ornek :
ALTER TABLE students MODIFY email varchar2(100) not null;
Kolon Silme :
ALTER TABLE table_name DROP COLUMN column_name;
Kolon Ismini degistirme :
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Kolon Silme :
ALTER TABLE table_name DROP COLUMN column_name;
Ornek :
ALTER TABLE students DROP email ;Kolon Ismini degistirme :
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Ornek :
ALTER TABLE students RENAME COLUMN email to mail_address;
Practice Exercise #1:
Asagidaki departments tablosunun ismini degistirin.
CREATE TABLE departments ( department_id number(10) not null, department_name varchar2(50) not null, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solution:
ALTER TABLE departments
RENAME TO depts;
Practice Exercise #2:
Asagidaki Employees tablosuna, ismini salary, datatype number(6) olan bir kolon ekleyin.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees ADD salary number(6);
Practice Exercise #3:
Asagidaki Customers tablosuna, contact_name isminde ve varchar2(50) tipinde ve last_contancted isminde ve tarih tipinde colonlar ekleyin.
CREATE TABLE customers ( customer_id number(10) not null, customer_name varchar2(50) not null, address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solution:
ALTER TABLE customers ADD ( contact_name varchar2(50), last_contacted date );
Practice Exercise #4:
Employees tablosunda employee_name kolonun datatipini, 75 yapiniz.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees
MODIFY employee_name varchar2(75);
Practice Exercise #5:
change the customer_name column to NOT allow null values and change the state column to a varchar2(2) datatype.
CREATE TABLE customers ( customer_id number(10) not null, customer_name varchar2(50), address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solution:
ALTER TABLE customers MODIFY ( customer_name varchar2(50) not null, state varchar2(2) );
Practice Exercise #6:
Asagidaki tablodaki salary kolonunu siliniz.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), salary number(6), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees DROP COLUMN salary;
Practice Exercise #7:
Asagiadki tablodaki department_name kolonunun ismini, dept_name ile degistirin.
CREATE TABLE departments ( department_id number(10) not null, department_name varchar2(50) not null, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solution:
ALTER TABLE departments
RENAME COLUMN department_name to dept_name;
16 Mayıs 2011 Pazartesi
jsf 2.0 ile gelen yenikler
Merhaba, bu makalemizde jsf 2.0 ile gelen yeniklerden ve Jsf 1.2 ile farklarindan, jsf 1.2 ile uyguladigimiz kodlari jsf 2.0 ile nasil
yaptigimizdan bahsetmeye calisacagim. Oncelikle jsf 2.0`in bize cok buyuk kolayliklar sagladigini belirtmek isterim, mesala artik applicatin.xml
dedigimiz diger bi adiyla faces-config.xml dosyasini jsf 2.0 ile kullanmamiza gerek kalmiyor, herseyi annotation`lar yardimi ile
kolaylikla yapiyoruz, ve bize xml ayar dosyalari ile ugrasmak degil, rahat rahat kod olusturmak kaliyor. Ilk karsilastirmamizdan baslayalim isterseniz.
Diyelim ki, birtane Backing Bean`imin olsun.
jsf 1.2 ile asagidaki sekilde kullaniyorduk.
UserBean.java
public class UserBean{
private String name;
getter / setter;
}
faces-config.xml
userBean
net.aslan.UserBean
request
bu sekilde kullaniyorduk, ama jsf 2.0 ile yapacagimiz sey cok basit, tek yapmamiz gereken classimiz uzerinde annotation olarak gostermek :)
Jsf 2.0 ile
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="userBean")
@RequestScoped
public class UserBean{
@ManagedProperty("Ertugrul")
private String name;
getter / setter;
}
hepsi bukadar. Artik UserBean backing beanimiz hazir. normal bi sekilde kullanabiliriz. Ve tabiki istenildi
durumda projede faces-config.xml dosyasi kullanilabilinir.
Bu sekilde annotationlar yardimi ile converter`larimizi, validator`larimizi olusturabiliriz, bunlarida karsilastiracak olursak
Jsf 1.2 ile kullanimi
DateConverter
net.aslan.jsf.converters.DateConverter
emailValidator
net.aslan.jsf.validators.EmailValidator
bu sekilde faces-config.xml icinde olusturuyorduk ve, kullanirken
ve validatorlarida ayni sekilde kullaniyorduk. simdi jsf 2.0 ile ne kadar kolay yapilidigina bakalim.
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateConverter")
public class DateConverter implements Converter {
}
bu sekilde classimizi converter olarak gosteriyoruz ve,
yapmamiz gereken bukadar. validatorlarimizida ayni sekilde kullaniyoruz
import javax.faces.validator.FacesValidator;
@FacesValidator(value = "emailValidator")
public class EmailValidator implements Validator {
}
bu sekilde,
Kendi olusturdugumuz custom componentlerimizide, diger http://www.jtpd.org/wiki/257311 makalemizde oldugu gibi yine annotation ile belirtiyoruz ve kullanabiliyoruz.
Gordugunuz gibi faces-config.xml ayar dosyasina hic bi sekilde ihtiyacimiz kalmadi..
Peki jsf 1.2 ile jsf 2.0 farklar bu kadar, elbetteki hayir. Simdi tek tek inceleyelim.
Oncelikle benimde daha once cok sorun yasadigim, url`nin diger sayfaya gittiginde degismeden kalmasi, diger sayfaya giderken url`nin
degismesi icin yapiyorduk, bu defada diger sayfaya giderken veriyi koruyamiyorduk.
Jsf 2.0 ile birlikte cok guzel bi cozum yolunu bulunmus ve benimde cok hosuma gitti :)
kullanimi asagidaki sekilde,
edit
/edit.xhtml
tek yapmamiz gereken bu satiri kullanmamiz, bu sekilde kullaninca artik url`i istedigimizde sekilde
degistirebiliyoruz ve en guzelide verileri kaybetmiyoruz :).
Bu kismi ayrintili bi sekilde incelemek icin, asagidaki linkden faydalanabilirsiniz.
http://blogs.sun.com/enterprisetechtips/entry/post_redirect_get_and_jsf
Ve bu ozelliklerden daha dogrusunu soylemek gerekirse, J2EE 6 ile gelen yeniklerden ve JSP page`inin yerine facelets`lar gibi cok hizli calisan ve cok cok kullanisli olan bi teknolojilenin J2ee specification`a eklemesi.
facelets`larin bize ne gibi yararlar saglandigi baska bir makalede genis
ve uygulamali bir sekilde gorecez. burada facelets`lar ile gelen template ozelliginden biraz bahsetmek istiyorum. Uygulamamiz icin sablaon olusturmak ve bunu jsp`de oldugu gibi her sayfada tekrar tekrar kullanmak gibi cok buyuk bi zahmetten kurtariyor bizi, butun bunlari diger bi makelede uyuglamali
bi sekilde gorecegiz. faceletsler ile jsf 2.0 asagidaki gibi kullaniyoruz.
template.xhtml sayfamiz.
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
Facelets - Template Example
Welcome
ve bu template`i
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
template="/template.xhtml ">
Sayfa ust Kismi
bu sekilde cok cok rahat bi sekilde kullaniyoruz. dedigim gibi diger makalede cok genis bi sekilde kullanacaz.
Burada dikkat ettiyseniz,
bu sekilde bi satirimiz var, burada
Diger bi yenilikden bahsedecek olursak, jsf 1.2`de metodlarin parametre degerlerini kullanamiyorduk, yani parametre alan bi metodu cagrip parametre veremiyorduk. Jsf 2.0 ile parametre alan metodlara parametre gonderip kullanabiliyoruz, hemen basit ve bizim icin cok faydali olacak bi ornek uzeriden gosterirsek.
Mesala list.xhtml sayfamizda, datatable ile listenen satirlarinin birinin uzerine tikladigimizda detay sayfasinda verinin gosterilmesi
jsf 1.2 ile bunu,
HtlmDataTable`i kullanarak, getRowData metodunu cagrip secilen satirdaki nesneyim bizim Object nesnemiz`e atiyorduk, yani
public class UserBean{
User selectedUser;
HtmlDatatable dataTable;
public HtmlDatatable getDataTable(){
return dataTable;
}
public void setDataTable(HtmlDatatable dataTable){
this.dataTable = dataTable;
}
public String detail(){
selectedUser = dataTable.getRowData();
return "detail";
}
binding="#{userBean.dataTable}" value="#{userBean.list}" var="user">
.......
......
genel itibariyle busekilde kullaniyorduk, yani HtmlDatatable componentinin ozellikleri kullanip, datatable`imizi buna binding yaparak yapmaya calisiyorduk. ve birde bunun faces-config.xml ayar dosyalari falani var :)..
Peki ayni ornegi jsf 2.0 nasil yapabiliriz,
@ManagedBean
public class UserBean{
User selectedUser;
public String detail(User user){
selectedUser = user;
return "detail";
}
="#{userBean.detail(user)}" value="user.name"/>
......
.....
gordugunuz gibi bu kadar basit, yani datatable`dan gelen user nesnesini, commandLinki`imizin action`unda parametre olarak giriyoruz ve bunu detail metodumuza parametre olarak gondererek ve esitliyoruz :).
Bu uygulamaya asagidaki sekilde... Netbeans`de kullanimi..
DataBean.java
package net.aslan.jsf.controller;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import net.aslan.beans.Person;
import net.aslan.beans.PersonRemote;
/**
* */
@ManagedBean
@SessionScoped
public class DataBean implements Serializable {
@EJB
private PersonRemote pr;
private Person selectedPerson;
public List getPersons() {
return pr.findAll();
}
public String detail(Person person) {
selectedPerson = person;
return "detail?faces-redirect=true&includeViewParams=true";
// bu sekilde kullaninca veriyi kabetmeden url`i oldugu sayfada gosterebiliriz.
// istenildigi durumda faces-config.xml`de navigation`lardada kullanilabilir.
}
public Person getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(Person selectedPerson) {
this.selectedPerson = selectedPerson;
}
}
Person.java
package net.aslan.beans;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* @author ertugrul
*/
@Entity
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String lastname;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Person)) {
return false;
}
Person other = (Person) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "accr.beans.Person[id=" + id + "]";
}
}
PersonRemote.java
package net.aslan.beans;
import java.util.List;
/**
*
* @author ertugrul
*/
public interface PersonRemote {
public void create(Person Person);
public void edit(Person Person);
public List findAll();
}
PersonEJB.java
package net.aslan.beans;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author ertugrul
*/
@Stateless
public class PersonEJB implements PersonRemote {
@PersistenceContext
EntityManager em;
public void create(Person Person) {
em.persist(Person);
}
public void edit(Person Person) {
em.merge(Person);
}
public List findAll() {
return em.createQuery("select object(o) from Person as o").getResultList();
}
}
index.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
styleClass="datatable" cellpadding="2"
cellspacing="0" rowClasses="row-odd, row-even">
detail.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
datatablestyle.css
.datatable{
border: 1px solid olive;
}
.datatable thead th{
background-color: #dfdfdf;
border-bottom: 1px solid olive;
padding: 4px;
}
.row-odd td{
padding: 4px;
background-color: #ddffcc;
}
.row-even td{
padding: 4px;
background-color: #cceebb;
}
dataTable tfoot {
background-color: #999;
}
yaptigimizdan bahsetmeye calisacagim. Oncelikle jsf 2.0`in bize cok buyuk kolayliklar sagladigini belirtmek isterim, mesala artik applicatin.xml
dedigimiz diger bi adiyla faces-config.xml dosyasini jsf 2.0 ile kullanmamiza gerek kalmiyor, herseyi annotation`lar yardimi ile
kolaylikla yapiyoruz, ve bize xml ayar dosyalari ile ugrasmak degil, rahat rahat kod olusturmak kaliyor. Ilk karsilastirmamizdan baslayalim isterseniz.
Diyelim ki, birtane Backing Bean`imin olsun.
jsf 1.2 ile asagidaki sekilde kullaniyorduk.
UserBean.java
public class UserBean{
private String name;
getter / setter;
}
faces-config.xml
bu sekilde kullaniyorduk, ama jsf 2.0 ile yapacagimiz sey cok basit, tek yapmamiz gereken classimiz uzerinde annotation olarak gostermek :)
Jsf 2.0 ile
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="userBean")
@RequestScoped
public class UserBean{
@ManagedProperty("Ertugrul")
private String name;
getter / setter;
}
hepsi bukadar. Artik UserBean backing beanimiz hazir. normal bi sekilde kullanabiliriz. Ve tabiki istenildi
durumda projede faces-config.xml dosyasi kullanilabilinir.
Bu sekilde annotationlar yardimi ile converter`larimizi, validator`larimizi olusturabiliriz, bunlarida karsilastiracak olursak
Jsf 1.2 ile kullanimi
bu sekilde faces-config.xml icinde olusturuyorduk ve, kullanirken
ve validatorlarida ayni sekilde kullaniyorduk. simdi jsf 2.0 ile ne kadar kolay yapilidigina bakalim.
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateConverter")
public class DateConverter implements Converter {
}
bu sekilde classimizi converter olarak gosteriyoruz ve,
yapmamiz gereken bukadar. validatorlarimizida ayni sekilde kullaniyoruz
import javax.faces.validator.FacesValidator;
@FacesValidator(value = "emailValidator")
public class EmailValidator implements Validator {
}
bu sekilde,
Kendi olusturdugumuz custom componentlerimizide, diger http://www.jtpd.org/wiki/257311 makalemizde oldugu gibi yine annotation ile belirtiyoruz ve kullanabiliyoruz.
Gordugunuz gibi faces-config.xml ayar dosyasina hic bi sekilde ihtiyacimiz kalmadi..
Peki jsf 1.2 ile jsf 2.0 farklar bu kadar, elbetteki hayir. Simdi tek tek inceleyelim.
Oncelikle benimde daha once cok sorun yasadigim, url`nin diger sayfaya gittiginde degismeden kalmasi, diger sayfaya giderken url`nin
degismesi icin
Jsf 2.0 ile birlikte cok guzel bi cozum yolunu bulunmus ve benimde cok hosuma gitti :)
kullanimi asagidaki sekilde,
tek yapmamiz gereken
degistirebiliyoruz ve en guzelide verileri kaybetmiyoruz :).
Bu kismi ayrintili bi sekilde incelemek icin, asagidaki linkden faydalanabilirsiniz.
http://blogs.sun.com/enterprisetechtips/entry/post_redirect_get_and_jsf
Ve bu ozelliklerden daha dogrusunu soylemek gerekirse, J2EE 6 ile gelen yeniklerden ve JSP page`inin yerine facelets`lar gibi cok hizli calisan ve cok cok kullanisli olan bi teknolojilenin J2ee specification`a eklemesi.
facelets`larin bize ne gibi yararlar saglandigi baska bir makalede genis
ve uygulamali bir sekilde gorecez. burada facelets`lar ile gelen template ozelliginden biraz bahsetmek istiyorum. Uygulamamiz icin sablaon olusturmak ve bunu jsp`de oldugu gibi her sayfada tekrar tekrar kullanmak gibi cok buyuk bi zahmetten kurtariyor bizi, butun bunlari diger bi makelede uyuglamali
bi sekilde gorecegiz. faceletsler ile jsf 2.0 asagidaki gibi kullaniyoruz.
template.xhtml sayfamiz.
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
Howto Samples
ve bu template`i
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
Sayfa ust Kismi
#{userBean.name}
bu sekilde cok cok rahat bi sekilde kullaniyoruz. dedigim gibi diger makalede cok genis bi sekilde kullanacaz.
Burada dikkat ettiyseniz,
bu sekilde bi satirimiz var, burada
Diger bi yenilikden bahsedecek olursak, jsf 1.2`de metodlarin parametre degerlerini kullanamiyorduk, yani parametre alan bi metodu cagrip parametre veremiyorduk. Jsf 2.0 ile parametre alan metodlara parametre gonderip kullanabiliyoruz, hemen basit ve bizim icin cok faydali olacak bi ornek uzeriden gosterirsek.
Mesala list.xhtml sayfamizda, datatable ile listenen satirlarinin birinin uzerine tikladigimizda detay sayfasinda verinin gosterilmesi
jsf 1.2 ile bunu,
HtlmDataTable`i kullanarak, getRowData metodunu cagrip secilen satirdaki nesneyim bizim Object nesnemiz`e atiyorduk, yani
public class UserBean{
User selectedUser;
HtmlDatatable dataTable;
public HtmlDatatable getDataTable(){
return dataTable;
}
public void setDataTable(HtmlDatatable dataTable){
this.dataTable = dataTable;
}
public String detail(){
selectedUser = dataTable.getRowData();
return "detail";
}
.......
......
genel itibariyle busekilde kullaniyorduk, yani HtmlDatatable componentinin ozellikleri kullanip, datatable`imizi buna binding yaparak yapmaya calisiyorduk. ve birde bunun faces-config.xml ayar dosyalari falani var :)..
Peki ayni ornegi jsf 2.0 nasil yapabiliriz,
@ManagedBean
public class UserBean{
User selectedUser;
public String detail(User user){
selectedUser = user;
return "detail";
}
......
.....
gordugunuz gibi bu kadar basit, yani datatable`dan gelen user nesnesini, commandLinki`imizin action`unda parametre olarak giriyoruz ve bunu detail metodumuza parametre olarak gondererek ve esitliyoruz :).
Bu uygulamaya asagidaki sekilde... Netbeans`de kullanimi..
DataBean.java
package net.aslan.jsf.controller;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import net.aslan.beans.Person;
import net.aslan.beans.PersonRemote;
/**
* */
@ManagedBean
@SessionScoped
public class DataBean implements Serializable {
@EJB
private PersonRemote pr;
private Person selectedPerson;
public List
return pr.findAll();
}
public String detail(Person person) {
selectedPerson = person;
return "detail?faces-redirect=true&includeViewParams=true";
// bu sekilde kullaninca veriyi kabetmeden url`i oldugu sayfada gosterebiliriz.
// istenildigi durumda faces-config.xml`de navigation`lardada kullanilabilir.
}
public Person getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(Person selectedPerson) {
this.selectedPerson = selectedPerson;
}
}
Person.java
package net.aslan.beans;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* @author ertugrul
*/
@Entity
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String lastname;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Person)) {
return false;
}
Person other = (Person) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "accr.beans.Person[id=" + id + "]";
}
}
PersonRemote.java
package net.aslan.beans;
import java.util.List;
/**
*
* @author ertugrul
*/
public interface PersonRemote {
public void create(Person Person);
public void edit(Person Person);
public List
}
PersonEJB.java
package net.aslan.beans;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author ertugrul
*/
@Stateless
public class PersonEJB implements PersonRemote {
@PersistenceContext
EntityManager em;
public void create(Person Person) {
em.persist(Person);
}
public void edit(Person Person) {
em.merge(Person);
}
public List
return em.createQuery("select object(o) from Person as o").getResultList();
}
}
index.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
cellspacing="0" rowClasses="row-odd, row-even">
detail.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
Detail Person
datatablestyle.css
.datatable{
border: 1px solid olive;
}
.datatable thead th{
background-color: #dfdfdf;
border-bottom: 1px solid olive;
padding: 4px;
}
.row-odd td{
padding: 4px;
background-color: #ddffcc;
}
.row-even td{
padding: 4px;
background-color: #cceebb;
}
dataTable tfoot {
background-color: #999;
}
Kaydol:
Kayıtlar (Atom)