Если вы отображаете данные в базу данных, вы, вероятно, захотите изучить стандарт Java Persistence Architecture (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 может быть полезен, если вы хотите поэкспериментировать с отображениями во время выполнения, не перестраивая исходный код.Последнее может быть полезно, если у вас есть одна сущность, и в зависимости от развертывания она хранится в разных источниках данных.