如果您要將數據映射到數據庫,那麼您可能需要研究Java持久性體系結構(JPA)標準。類使用定義表字段,關係等的標籤進行註釋,而不會實質性地影響對那些東西不感興趣的代碼如何與類進行交互。換句話說,這是一個POJO。
JPA的實現,如Hibernate & OpenJPA使用註釋從數據源加載/存儲實體,該數據源通常是SQL數據庫,但嚴格來說不一定非要。
存儲在數據庫中的類將被註釋爲@Entity
,並且包含可能是持久性或瞬態的字段。您還可以指定@Column字段映射到數據庫中,並使用@OneToOne
,@ManyToOne
和@OneToMany
註釋與@JoinTable
,@JoinColumn
來定義權利之間的關係。
實體通過EntityManager
和查詢語言進行存儲/檢索。
例如
@Entity
@Table(name = "BOOKS")
class Book {
@Id
@Column(name = "BOOK_ID")
int bookId;
@ManyToOne
@JoinColumn(name = "AUTHOR_ID", insertable = false, updatable = false)
Author author;
@Column(name = "TITLE")
String title;
@Transient
double relevanceScore;
}
@Entity
@Table(name = "AUTHORS")
class Author {
@Id
@Column(name = "AUTHOR_ID")
int id;
@Column(name = "NAME")
String name;
@OneToMany(mappedBy = "AUTHORS")
@JoinColumn(name = "AUTHOR_ID")
Set<Book> books;
}
,並利用它:
Query q = getEntityManager.createQuery("SELECT b FROM Book b WHERE b.title = :title");
q.setParameter("title", title);
return q.getResultList();
在Hibernate中的情況下,你可以選擇是否使用JPA風格批註或外部XML映射文件。在大多數情況下,註釋可能更易於維護,但如果您想在運行時使用映射而不重建源代碼,則XML可能會很有用。如果您擁有單個實體並根據其部署針對不同數據源存儲,則後者可能會很有用。
請不要提問像這個社區維基。 – 2010-10-13 08:11:10
@seanizer:社區wiki有沒有問題?這個問題似乎接近分界線。 – Douglas 2010-10-13 08:14:16
由於這只是一個問題,想知道如何實現這些東西(所以我知道如何在我自己的應用程序中「合理地」執行某些操作),而不是明確的問題和明確的答案,因此我將此作爲一個社區Wiki問題。如果對這個問題的提出存在疑問,那麼一般規則是什麼? – Patrick 2010-10-13 08:32:05