Wstęp
Bardzo często istnieje konieczność
Mechanizm wtyczek dostarcza narzędzi, które umożliwiają wtyczkom korzystanie z bazy danych. Zalecanym sposobem jest używanie biblioteki Hibernate.
Wtyczka może uzyskać dostęp do jakiejkolwiek bazy danych, jednak w tym rozdziale opisana zostanie tylko obsługa systemowej bazy danych.
Konfiguracja obiektów
W rozdziale Konfiguracja kontekstu wtyczki opisane zostało, w jaki sposób dodawać beany do kontekstu. Obsługa bazy danych bazować będzie na integracji SpringFramework i Hibernate. Opisana zostanie konfiguracja XML.
Aby zarejestrować SessionFactory wystarczy dodać taką deklarację bean'a. Obiekt automatycznie konfiguruje używany dialect, datasource etc.
Code Block | ||||
---|---|---|---|---|
| ||||
<bean id="sessionFactory" class="com.suncode.pwfl.persistence.support.hibernate.SystemBaseSessionFactoryBean">
<property name="packagesToScan" value="com.suncode.plugin.tutorial" />
</bean> |
Info |
---|
Klasa com.suncode.pwfl.persistence.support.hibernate.SystemBaseSessionFactoryBean bazuje na klasie LocalSessionFactoryBean. Tam również znajduje się dokumentacja. |
Prawdopodobnie chcemy także wykorzystać inne mechanizmy, które upraszczają kod transakcyjny:
Code Block | ||||
---|---|---|---|---|
| ||||
<!-- adnotacje @Transactional -->
<tx:annotation-driven/>
<!-- TransactionManager -->
<bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> |
Teraz należy stworzyć naszą encję:
Code Block | ||||
---|---|---|---|---|
| ||||
@Entity
@Table(name = "pm_tutorial_note")
@SequenceGenerator(name = "note", sequenceName = "pm_tutorial_note_id")
public class Note {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "note")
private Long id;
@Column(length = 2000)
private String text;
// getters...
// setters...
} |
Note |
---|
Nazwy tabel, kolumn i sequencerów nie powinny przekraczać 30 znaków (limit Oracle) |