回答
Embedded annotation如何影响数据库?
它根本不会影响它。在ORM提供者层上,来自嵌入实体的所有字段都是,并与父实体合并,和对待,就好像它们一直在那里声明一样。换句话说,它的工作原理就好像你将所有字段,getter和setter复制到包含嵌入对象的实体中。
SQL查询将如何更改?
他们不会。你不需要改变任何东西。往上看。
使用注释注记的典型案例是什么?
有时候你有一个巨大的表,有几列(特别是遗留数据库)。但是有些列在逻辑上彼此相关(如CUSTOMER
表中的街道,城市和电话号码)。如果您不想使用所有字段创建对象,则会创建一个嵌入式对象Address
。通过这种方式,您可以将地址列逻辑分组为一个对象,而不是将同样庞大的POJO与一组平坦的字段列表组合在一起。
使用嵌入对象被认为是一种很好的做法,特别是当发现强1-1关系时。
延长@Tomasz Nurkiewicz嵌入对象是映射表与注释的一个复合主键丝毫帮助有用的答案@EmbenddedId
什么是使用注解典型的用例?
这是典型地表示一个复合主密钥作为可嵌入的类:
@Entity
public class Project {
@EmbeddedId ProjectId id;
:
}
@Embeddable
Class ProjectId {
int departmentId;
long projectId;
}
主键字段在一个可嵌入的类中定义。该实体包含一个使用@EmbeddedId进行注释并包含该可嵌入类的实例的单个主键字段。使用此表单时,未定义单独的ID类,因为可嵌入类本身可以表示完整的主键值。
嵌入式注释如何影响数据库?
它没有。使用此注释来表示复合主键。
SQL查询将如何更改?
他们不会。
就像Tomasz说的那样 - 这是一个目标 - 另一个 - 你可以在表格中“拍照”其他相关实体的状态。 F.e.
@Embeddable public class Company {
String name;
String streetName;
String city;
}
@Entity public class Invoice {
@Embedded
@AttributeOverrides({
@AttributeOverride(name="name", [email protected](name="name")),
@AttributeOverride(name="streetName", [email protected](name="streetName")),
@AttributeOverride(name="city", [email protected](name="city")),
})
Company seller;
@Embedded
@AttributeOverrides({
@AttributeOverride(name="name", [email protected](name="name")),
@AttributeOverride(name="streetName", [email protected](name="streetName")),
@AttributeOverride(name="city", [email protected](name="city")),
})
Company customer;
}
在这个例子 - 无需嵌入式和@AttributeOverrides在公司客户未来的任何变化将改变发票的数据 - 这是一个错误 - 该公司与旧数据生成发票。
这是很好的说明如下::) Java - JPA @Basic and @Embedded annotations
它并不总是必须是类的ID。在域驱动设计中,您可以从对象的某些属性中创建一个component
,例如,在这个例子中http://yaarunmulle.com/hibernate/hibernate-example/hibernate-mapping-component-using-annotations-1.html学生有一个地址组件。
Student的Address属性用@Embedded标注为指向Address类组件。
- 1. @with注释的含义是什么? (Play Framework)
- 2. '#noqa'在Python注释中的含义是什么?
- 3. 新@SystemApi注释的含义是什么,与@hide有什么不同?
- 4. Embedded Jetty找不到带注释的Servlet
- 5. @命名注释的目的是什么
- 6. 注释中注释方法的首选方式是什么?
- 7. “UseTaskFriendlySynchronizationContext”的含义是什么?
- 8. CronJobs的含义是什么?
- 9. configureDefaultServletHandling的含义是什么?
- 10. $ @的含义是什么?
- 11. URL的含义是什么
- 12. if(';')的含义是什么?
- 13. !int_variable--?的含义是什么!
- 14. ui.draggable.draggable的含义是什么?
- 15. SootMethod.getSubSignature()的含义是什么?
- 16. 包注释有什么意义?
- 17. 为什么@interface用于定义注释?
- 18. 到底是什么在[expr.ref]/1中提到的脚注的含义是什么?
- 19. @Autowired注释的优点是什么?
- 20. 什么是默认的JPA注释
- 21. “__callback”SAL注释的作用是什么?
- 22. 什么是hibernate中的注释?
- 23. scope = ScopeType.PAGE的新注释是什么?
- 24. 什么是Scala代码的含义和解释需要
- 25. 解释导出界面的含义是什么?
- 26. 代码含义是什么?
- 27. 什么是Scala注释实际上?
- 28. python 3.x什么是 - >注释
- 29. 什么是应该用于javax.inject.Named注释?
- 30. 这些JPA注释是什么意思?
好吧,坚持下去。如果用一个嵌入对象替换实体中的一组字段,“@ Embedded”不会影响数据库。但是如果你将一个类从'@ Entity'改成'@ Embedded',那将会产生相当大的影响! –
* @ TomAnderson *:你是对的。实际上,如果考虑强1-1关系,这就是我考虑使用'@ Embedded'时的意思:要么使用单独的'@ Entity',要么将其与父实体合并,而保留在单独的@ Embedded类中。 –