当前位置: 首页 > 面试题库 >

使用JPA和Hibernate时@ Size,@ Length和@Column(length = value)之间的区别

卢黎昕
2023-03-14
问题内容

以下三个字段的有效性检查之间有什么区别?

@Entity
public class MyEntity {

    @Column(name = "MY_FIELD_1", length=13)
    private String myField1;
    @Column(name = "MY_FIELD_2")
    @Size(min = 13, max = 13)
    private String myField2;
    @Column(name = "MY_FIELD_3")
    @Length(min = 13, max = 13)
    private String myField3;

    // getter & setter

}

我读到第一个与DDL有关。第二个是用于bean验证的。第三是用于hibernate验证。

那是对的吗?我仍然不明白的是:我什么时候必须使用哪个?这些注释之一何时触发?

编辑:考虑以下情况:考虑到需要开发一个长度为string类型的字段(长度为13)的实体,您会选择上述哪种方法?甚至更好:您必须问自己哪些问题才能找出适合您目的的一个?


问题答案:
  1. @Column是JPA批注,length模式生成工具使用该属性来设置关联的SQL列长度。
  2. @Size 是一个Bean验证批注,它验证关联的String具有一个值,该值的长度受最小值和最大值限制。
  3. @Length 是特定于Hibernate的注释,其含义与 @Size

因此,无论2.并且3.应该验证String使用Bean验证长度。我选择2.它是因为它是通用的。



 类似资料:
  • 下面三个字段的验证检查有什么区别? 我读到第一个与DDL有关。第二个是bean-验证。第三个是Hibernate-Validation。 那是正确的吗?我至今不明白的是:我什么时候必须用哪一个?这些注释中的一个何时触发? 编辑:考虑以下情况:给定开发具有长度为13的字符串类型字段的实体的需求。以上提到的方法你会选择哪一种?或者更好:你必须问自己哪些问题才能找出哪一个适合你的目的?

  • 问题内容: 好的,所以我有这段代码: 我的问题是,为什么是和不是。我以为得到你使用而不是数组的长度。您是否因为尝试获取字符串而不是数组的长度而使用?PS我是一个初学者,所以这对您来说似乎很明显,但对我而言却不是。 问题答案: 他们是两个完全不同的东西。 是 arrays 的属性。那不是方法调用。 是对的方法调用。 您看到了这两者,因为首先,您要遍历数组的长度。数组的内容是,并且您希望将它们的所有长

  • 本文向大家介绍jQuery length 和 size()区别总结,包括了jQuery length 和 size()区别总结的使用技巧和注意事项,需要的朋友参考一下 jQuery length和size()区别总结如下: 1.length是属性,size()是方法。 2.如果你只是想获取元素的个数,两者效果一样既 ("img").length和("img").length和("img").siz

  • 本文向大家介绍Java中的length和length()有什么区别?,包括了Java中的length和length()有什么区别?的使用技巧和注意事项,需要的朋友参考一下 的长度是一个数组的实例变量在Java中,而长度()是一个String类的方法。 长度 一个数组是一个对象,其保持相同的TY值的固定数量的PE。 的长度在一个数组变量返回的数组的长度,即一个号码存储在数组中的元素。 数组初始化后,

  • 问题内容: 为什么要将数组的长度作为属性,而对于,我们有一个方法? 问题答案: 让我首先强调三种用于类似目的的不同方式。 - 阵列() -知道数组的长度 - 与字符串相关的对象(等)-了解字符串的长度 - 集合对象(等)-知道集合的大小 现在忘记考虑正义length和正义。 不是方法,因此完全无法在对象上使用是完全有意义的。它仅适用于数组。 它的名称更好地描述了它,并且因为它是一种方法,将在我上面

  • 问题内容: 但没人回答我的下一个问题。经典的hibernate方法使用和JPA 实现之间有什么区别?我听说此JPA实现使用并像包装器一样工作,这是真的吗? 问题答案: 确实。 JPA只是一个API,允许您从使用的持久层中进行抽象。Hibernate提供了充当接口的实现,它使用与Hibernate 相同的基础方法。 这个想法是,例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码。