通过定义JPA实体避免冗余
#网络开发人员 #database #java #jpa

如果您要设置桌子,请不要那样做!

Image description

让我们更好地知道为什么!

在JPA中,通过笔记本映射到桌子上的课程。在此注释中,我们指出类是JPA实体,在这种情况下,它会自动映射到表格。

为此,默认情况下将JPA配置为将类名称求解到表:

1- Java中的类是由Pascalcase定义的。
2-类的名称转换为snake_case。
3-此转换名称用于数据库中的表名。

进入,通过此算法:

CustomerDetails -> customer_details

在原始示例的情况下:

Product -> product

仅此而已,我们已经消除了对@Table表示法的需求。

我们还通过在jpql查询中设置实体的名称来定义表的名称。这是因为桌子的名称通过您的名字在亲爱的名字中解决。首先,默认情况下,它通过实体类的名称解决,我们可以通过笔记本更改该名称:

@Entity(name = "blablabla")

正在这样做,我们可以更改将要映射的表的名称,以及我们将用于JPQL DARIES的名称。

我们可以有边缘案例来定义这两个注释,即表具有特定名称的时候,在JPQL daries中,我们将参考类名称,示例:

@Entity
@Table(name="products")
public class Product {

}

在这种情况下,表的名称为复数,por©m在查询jpql中,我们将使用类名称:

@Query("Product p where p.vendorId = :vendorId")
Product findProductFromVendor(int vendorId);

在这种情况下,将在SQL中生成的查询将如下:

SELECT * FROM products WHERE vendor_id = 10

另一个边缘情况是,如果我想让亲爱的实体的名称与班级名称不同,并且表中的名称与两者不同:

@Entity(name="prod")
@Table(name="products")
public class Product{

}

必不可少的理解说明和框架的操作,我们用来安排时会陷入不必要的冗余!