[JavaEE] Data Validation
Posted Answer1215
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaEE] Data Validation相关的知识,希望对你有一定的参考价值。
When we create Entity and Respority, we also need to do validations to protect our data.
In Java, validations are built-in, using decorators. For Typescript, found a useful libaray to do the similar validation as well. Checkout class-validator
Entity:
@Entity public class Book { // ====================================== // = Attributes = // ====================================== @Id @GeneratedValue private Long id; @Column(length = 200) @NotNull @Size(min = 1, max = 200) private String title; @Column(length = 10000) @Size(min = 1, max = 10000) private String description; @Column(name = "unit_cost") @Min(1) private Float unitCost; @Column(length = 50) @NotNull @Size(min = 1, max = 50) private String isbn; @Column(name = "publication_date") @Temporal(TemporalType.DATE) @Past private Date publicationDate; .... }
Testing:
We want to test, if we give title as null, it should throw exception.
@RunWith(Arquillian.class) public class BookRepositoryTest { @Inject private BookRepository bookRepository; // We want the test throw exception @Test(expected = Exception.class) public void createInvalidBook() { Book book = new Book("isbn", null, 12F, 123, Language.ENGLISH, new Date(), "imageURL", "description"); bookRepository.create(book); } @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClass(BookRepository.class) .addClass(Book.class) .addClass(Language.class) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") .addAsManifestResource("META-INF/test-persistence.xml", "persistence.xml"); } @org.junit.Test public void create() { } }
Respority:
@Transactional(SUPPORTS) public class BookRepository { // ====================================== // = Injection Points = // ====================================== @PersistenceContext(unitName = "bookStorePU") private EntityManager em; // ====================================== // = Business methods = // ====================================== public Book find(@NotNull Long id) { return em.find(Book.class, id); } // For creating and deleting methods, we want to use REQUIRED @Transactional(REQUIRED) public Book create(@NotNull Book book) { em.persist(book); return book; } }
Testing:
@Test(expected = Exception.class) public void findWithInvalidId() { bookRepository.find(null); }
以上是关于[JavaEE] Data Validation的主要内容,如果未能解决你的问题,请参考以下文章
在Keras的拟合函数中validation_data和validation_split之间的关系是什么?
为啥 Jackson ObjectMapper 不能序列化 play.data.validation.ValidationError 类?
java.lang.NoSuchMethodError:javax.validation.BootstrapConfiguration.getClockProviderClassName