Newsletter

Grupa MagazynyInternetowe

Online: 893

Wyszukiwarka

JAVA, Bazy danych

Bazy danych w Javie

Informują one o tym, że klasa User ma zostać zmapowana do tabeli USERS. Odpowiednie adnotacje należy także dodać przy poszczególnych polach klasy. Pole id jest kluczem głównym:

[+]
 
 
Pobierz
1. @Id @GeneratedValue
2. @Column(name = "USER_ID")
3. private Long id;

@Id oznacza, że pole jest kluczem głównym, @GeneratedValue informuje że poszczególne wartości pola mają być automatycznie generowane, a @Column definiuje nazwę kolumny w tabeli (USERS), z którą dane pole ma być powiązane.

W przypadku pozostały pól określamy juz tylko nazwy kolumn w tabeli:

[+]
 
 
Pobierz
1. @Column(name = "NAME")private String name;
2. @Column(name = "SURNAME")private String surname;
3. @Column(name = "EMAIL")private String email;
4. @Column(name = "PASSWORD")private String password;
Klasa News

Klasa News jest bardzo podobna do klasy User. Również zawiera dwa konstruktory, pola prywatne określające zawartość newsa, a także gettery i settery pozwalające na zarządzanie tymi polami. package news;

[-]
 
 
Pobierz
Listing zwinięty - 38 linii

Same adnotacje też niewiele się różnią od tych z klasy User:

[+]
 
 
Pobierz
 1. @Entity
 2. @Table(name = "NEWS")
 3. public class News {
 4.   @Id @GeneratedValue
 5.   @Column(name = "NEWS_ID")
 6.   private Long id;
 7.   @Column(name = "TITLE")
 8.   private String title;
 9.   @Column(name = "CONTENT")
10.   private String content;
11.   //...
12. }

jednak w przypadku pola author są całkowicie inne:

[+]
 
 
Pobierz
1. @ManyToOne(cascade = CascadeType.ALL)
2. @JoinColumn(name = "USER_ID")
3. private User author;

Ustanawiają one połączenie klasy News z klasą User poprzez pole author. Określają także sposób usuwania rekordów na kaskadowy, czyli w przypadku usunięcia użytkownika, automatycznie usunięte zostaną wszystkie napisane przez niego newsy. Nazwa kolumny łączącej klasę News z klasą User ustalana jest za pomocą adnotacji @JoinColumn. I tak większość pracy już masz za sobą!

Pozostałe klasy

Dla wygody pracy z Hibernate zbudujemy jeszcze klasę pomocniczą - HibernateUtil. Oto kod, który zaraz przeanalizujemy:

[+]
 
 
Pobierz
 1. package presistence;
 2. import org.hibernate.*;
 3. import org.hibernate.cfg.*;
 4. public class HibernateUtil {
 5.   private static SessionFactory sessionFactory;
 6.   static {
 7.     try {
 8.       sessionFactory = new
    AnnotationConfiguration().configure().buildSessionFactory();
 9.     } catch(Throwable ex) {
10.       throw new ExceptionInInitializerError(ex);
11.     }
12.   }
13.   public static SessionFactory getSessionFactory() {
14.     return sessionFactory;
15.   }
16.   public static void shutdown() {
17.     getSessionFactory().close();
18.   }
19. }

Klasa ta tworzy w bloku statycznym statyczną zmienną sessionFactory, która jest zwracana przez statyczną metodę getSesionFactory. Zmienna ta wskazuje na fabrykę sesji, która w typowym przypadku aplikacji korzystającej z Hibernate powinna być tylko jedna na całą aplikację - stąd jest ona statyczna i tworzona przy pierwszym odwołaniu do klasy HibernateUtil.

Sesje w Hibernate określają niejako połączenie z bazą. Ta sesja posiada API używane do nadawania trwałości obiektom. Także za pośrednictwem sesji tworzone są transakcje.

Klasa HibernateUtil w przypadku naszej prostej aplikacji jest poniekąd zbędna - wszystko, co się tu znajduje, można było zawrzeć w klasie Run. Jeśli jednak aplikacja byłaby bardziej złożona, a jednocześnie chciałbyś pracować z obiektami wykonywanymi w wielu klasach, klasa HibernateUtil okaże się bardzo pomocna.

Dzięki niej możesz zaoszczędzić sobie pisania ciągle tego samego kodu oraz zapewnić istnienie tylko jednego obiektu klasy SessionFactory na aplikację. W naszym przykładzie tylko jedna klasa korzysta z klas News oraz User. Jest to klasa Run:

[-]
 
 
Pobierz
Listing zwinięty - 40 linii
19 września 2007

Powiązane publikacje

Po co web developerowi bazy danych?

Po co web developerowi bazy danych?

Czat w Javie

Czat w Javie

Java w urządzeniach mobilnych

Java w urządzeniach mobilnych

 
Skomentuj
ten artykuł

Komentarzy: 1

Kod obrazkowy
(Kliknij, aby zmienić)
 
Przejdż do tego postu na forum wtorek, 13.10.2009 12:28TomEk

Niestety nie mogę znaleźć liku do paczki z całością programu - przydałaby się do testów

Zobacz wszystkie komentarze »

Autor

Marcin Staniszczak

Artykuły tego autora:

Newsletter

Jesli chcesz być na bieżąco z tym co się dzieje na stronie magazynu INTERNET Maker zapisz się do naszego newslettera.