• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Spring Boot JPA中使用@Entity和@Table的实现

java 搞代码 4年前 (2022-01-05) 24次浏览 已收录 0个评论

这篇文章主要介绍了Spring Boot JPA中使用@Entity和@Table的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文中我们会讲解如何在Spring Boot JPA中实现class和数据表格的映射。

默认实现

Spring Boot JPA底层是用Hibernate实现的,默认情况下,数据库表格的名字是相应的class名字的首字母大写。命名的定义是通过接口ImplicitNamingStrategy来定义的:

 /** * Determine the implicit name of an entity's primary table. * * @param source The source information * * @return The implicit table name. */ public Identifier determinePrimaryTableName(ImplicitEntityNameSource source); 

我们看下它的实现ImplicitNamingStrategyJpaCompliantImpl:

 @Override public Identifier determinePrimaryTableName(ImplicitEntityNameSource source) { if ( source == null ) { // should never happen, but to be defensive... throw new HibernateException( "Entity naming information was not provided." ); } String tableName = transformEntityName( source.getEntityNaming() ); if ( tableName == null ) { // todo : add info to error message - but how to know what to write since we failed to interpret the naming source throw new HibernateException( "Could not determine primary table name for entity" ); } return toIdentifier( tableName, source.getBuildingContext() ); } 

如果我们需要修改系统的默认实现,则可以实现接口PhysicalNamingStrategy:

 public interface PhysicalNamingStrategy { public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment);<a style="color:transparent">来源gao($daima.com搞@代@#码网</a> public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment); public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment); } 

使用@Table自定义表格名字

我们可以在@Entity中使用@Table来自定义映射的表格名字:

 @Entity @Table(name = "ARTICLES") public class Article { // ... } 

当然,我们可以将整个名字写在静态变量中:

 @Entity @Table(name = Article.TABLE_NAME) public class Article { public static final String TABLE_NAME= "ARTICLES"; // ... } 

在JPQL Queries中重写表格名字

通常我们在@Query中使用JPQL时可以这样用:

 @Query(“select * from Article”) 

其中Article默认是Entity类的Class名称,我们也可以这样来修改它:

 @Entity(name = "MyArticle") 

这时候我们可以这样定义JPQL:

 @Query(“select * from MyArticle”)

到此这篇关于Spring Boot JPA中使用@Entity和@Table的实现的文章就介绍到这了,更多相关Spring Boot JPA使用@Entity和@Table内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是Spring Boot JPA中使用@Entity和@Table的实现的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring Boot JPA中使用@Entity和@Table的实现

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址