niedziela, 28 czerwca 2009

Para buch, koła w ruch... czyli aplikacja CRUD z JBoss Seam w 5... no może 15 minut ;).

Stoi na stacji lokomotywa, ciężka ogromna, aż pot z niej spływa... że tak zacznę słowami poety.

Z końmi, grubasami i armatą, które rozmieszczone są w kolejnych wagonach ciągniętych przez pojazd się przy okazji dzisiejszego wpisu nie spotkamy, ale... z parą jak najbardziej.

Przedstawię jak najprościej wygenerować aplikację CRUD z wykorzystaniem szkieletu aplikacyjnego JBoss Seam. Posłużę się środowiskiem Eclipse 3.4.2 z zainstalowaną wtyczką JBoss Tools 3.0. Użyję też bazy MySql 5.0 oraz serwera aplikacji Java EE JBoss 5.0.1.GA. Niezbędna okaże się również instalacja Seama. Użyję wersji 2.1.1.GA.

Jeżeli potrzebujesz aplikacji webowej, aby zaliczyć projekt, świetnie trafiłeś. Wystarczy przerwa między zajęciami, ale ad rem...

Instaluję Eclipse, bazę MySQL, JBossa 5.0.1.GA oraz wtyczkę JBoss Tools oraz Pudelek Eclipse Plugin.

W Eclipsie, konfiguruje środowisko uruchomieniowe JBossa. W tym celu otwieram menu preferencji
Window -> Preferences
i znajduję tam zakładkę
Server / Runtime Environments
na której klikam przycisk
Add...

Odszukuję pozycję
JBoss 5.0 Runtime
która znajduje się w katalogu
JBoss Comunity


Klikam
Next
wskazuję katalog z zainstalowanym JBossem


i klikam
Finish

Pora stworzyć nowy projekt. Z menu
File -> New -> Project...
wybieram
Seam Web Project


Nadaję nazwę projektowi (radzę zacząć małą literą):
seamApplication

Z menu
Configuration
wybieram
Dynamic Web Project With Seam 2.1 (technology preview)


Klikam kilka razy
Next >
i zatrzymuję się na zakładce, na której muszę wskazać środowisko uruchomieniowe Seam
Seam Runtume.
W tej samej zakładce wybieram rodzaj aplikacji jako
ear.


Definiuję środowisko uruchomieniowe Seama, klikając

Add...


i wskazuję katalog, w którym zainstalowałem Seama 2.1.1.GA.

Na tej samej zakładce konfiguruję połączenie z bazą danych. Pobieram sterownik JDBC MySQL Connector.

W sekcji Database wybieram typ bazy danych jako
MySQL (InnoDB)
oraz tworze nowy profil połączenia z bazą. Jako
Profile Type
wybieram
MySQL


Klikam
Next >
i definiuję nowy sterownik


Na zakładce
Jar List
wskazuję plik jar który znajdował się w paczce z pobranym sterownikiem JDBC.


Podaję nazwę bazy danych oraz nazwę użytkownika i hasło do bazy


Od razu tworzę taką bazę wydając polecenie w konsoli mysql

create database test default character set utf8;

a w Eclipsie klikam
Finish.

Komputer chwilkę pomyśli, po czym stworzy 4 projekty:
seamApplication z aplikacją webową
seamApplication-ear z deskryptorem aplikacji EAR
seamApplication-ejb z aplikacją EJB
seamApplication-test z testami aplikacji

Startuję serwer aby sprawdzić, czy aplikacja się uruchamia.
Po wpisaniu w przeglądarkę adresu:
http://localhost:8080/seamApplication/
moim oczom ukazuje się aplikacja:


So far, so good...

Jako, że mamy do stworzenia aplikację CRUD, trzeba by stworzyć encję, którą będziemy mogli edytować. Tworzę więc klasę
pl.matt.model.Employee:


package pl.matt.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.Max;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotNull;

@Entity
@Table(name="employees")
public class Employee {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@Length(max=128)
@NotNull
private String name;

@Column(length=128)
@NotNull
private String surname;

@Email
@NotNull
@Column(length=128)
private String email;

@Min(0)
@Max(130)
@NotNull
private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}


Następnie generuję do niej interfejs użytkownika. Klikam prawym przyciskiem myszy na projekcie, wybieram
New... -> Other
i
Seam Generate Entities


Zaznaczam opcję

Use existing entities

i klikam
Finish

Restartuję JBossa i aplikacja gotowa.

Pojawiła się lista pracowników, ich wyszukiwarka oraz strony umożliwiające ich dodawanie, kasowania oraz aktualizację.


Do tego działa logowanie użytkowników, ajaxowa walidacja adresu email, wieku i wymagalności pól.


Żyć nie umierać.
Kod źródłowy przykładu zamieszczam tutaj, tu, tu i tu.

Brak komentarzy: