Skip to content

Instantly share code, notes, and snippets.

@nanotaboada
Last active November 11, 2023 19:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nanotaboada/0b3290bb0a422f1c57a9445dd37f8869 to your computer and use it in GitHub Desktop.
Save nanotaboada/0b3290bb0a422f1c57a9445dd37f8869 to your computer and use it in GitHub Desktop.
JPA Entity Bean for a Book
import java.time.LocalDate;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Past;
import org.hibernate.validator.constraints.ISBN;
import org.hibernate.validator.constraints.URL;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@Entity
@Table(name = "books")
public class Book {
@Id
@ISBN
private String isbn;
@NotBlank(message ="Title is required.")
private String title;
private String subtitle;
@NotBlank(message ="Author is required.")
private String author;
private String publisher;
@Past
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate published;
private int pages;
@Lob
@NotBlank(message ="Description is required.")
private String description;
@URL
@NotBlank(message ="Website is required.")
private String website;
// The no-argument constructor, which is also a JavaBean convention, is a requirement for all
// persistent classes.
// https://docs.jboss.org/hibernate/orm/5.5/quickstart/html_single/
public Book() { }
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSubtitle() {
return subtitle;
}
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public LocalDate getPublished() {
return published;
}
public void setPublished(LocalDate published) {
this.published = published;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment