Customer
,则不需要使用 @Table(name=CUSTOMER)
标注的 name
属性将其映射到数据库中的 customer
表。因此,命名约定需要考虑以下情况:标注使用很多缺省名称来简化编码。也就是说,您需要注意一些隐式命名。我们建议您遵循标注命名约定的所有缺省设置,因为通过这样做,您可以为标注编写较少的代码,而仅依靠缺省设置即可。
标识符类型 |
命名规则 |
示例和参考 |
实体(标注为 @Entity) | 只使用对象的名称。 不要附加 "Bean" 或 "POJO" 后缀。 遵循类的命名约定 |
例如, Address.java 是一个地址实体的名称。 |
实体管理器工厂(标注为 @PersitenceUnit) | 如果只有一个实体管理器工厂,则名称是 emf 如果有多个实体管理器工厂,则命名规则是向名称附加 "Emf",例如 <持久性单元名称>Emf |
例如,public EntityManagerFactory emf; 如果有多个实体管理器工厂, public EntityManagerFactory pestoreEmf; public EntityManagerFactory inventoryWarehouseEmf; |
实体管理器(标注为 @PersistenceContext) | 如果只有一个实体管理器,则名称是 em 如果有多个实体管理器,则向名称附加 "Em"。通常,实体管理器与持久性单元密切相关,因此,常用约定为 <持久性单元名称>Em |
例如,
如果有多个实体管理器, private EntityManager pestoreE m; private EntityManager inventoryWarehouseEm; |
用户事务 | utx 是要使用的名称 |
例如,public UserTransaction utx; |
侦听程序(标注为 @EntityListeners) | 规则是向实体名称附加 "Listener" |
例如,OrderListener |
持久性单元 |
应该基于资源名称。资源名称应该带有 "Pu" 后缀。应该以混合大小写的形式编写资源名称,并且将每个词的第一个字母大写<资源名称>Pu |
例如,在 persistence.xml 文件中<persistence> |
数据源名称 |
应该基于资源名称。应该以混合大小写的形式编写资源名称,并且将每个词的第一个字母大写 |
示例: jdbc/PetStoreDB |
O/R 映射文件 如果要在源代码中覆盖 O/R 映射标注,请使用此文件。 |
当每个 META_INF/persistence.xml 只需要一个映射文件时,请使用缺省名称 orm.xml 。当需要多个映射文件时,请使用 <资源名称>Orm .xml |
例如,<persistence> |
命名查询和 finder 方法 |
采用混合大小写的形式,第一个字母小写,并将每个内部词的第一个字母大写。 必须指定命名查询的范围,我们使用类名作为范围。 |
例如,此命名查询中的
"getItemsPerProductCategory" @NamedQuery( 而在使用命名查询的查询中,应按如下方式指定命名查询的范围并进行使用 Query query =
|
命名参数 | 采用混合大小写的形式,第一个字母小写,并将每个内部词的第一个字母大写。 |
在 Java 查询语言中,可以指定可传入到查询中的命名参数。命名查询也会使用这些命名参数。 例如,参数 ":categoryName" query = SELECT i FROM Item i
WHERE i.product.categoryId LIKE :categoryName "); categoryName",
"dogs"); |
数据库 |
如果您的组织已制订了数据库命名约定,请遵循该约定。否则,应按照应用程序来命名数据库并附加 DB。 <应用程序名称>DB |
例如:PetStoreDB |
Customer
。在这种情况下,您需要将映射信息放在 Customer 实体的实体标注的 CUSTOMERS 中。由于这是通常的做法,因此,我们将其视为备选约定,但它要求每个实体类使用表标注将实体映射到表上,例如,Customer 实体的 @Table(name=CUSTOMERS) 标注。