回答
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. '#noqa'在Python注释中的含义是什么?
- 2. C中多行注释警告的含义是什么?
- 3. @with注释的含义是什么? (Play Framework)
- 4. 新@SystemApi注释的含义是什么,与@hide有什么不同?
- 5. HardCoded注释是什么?
- 6. 什么是注释索引?
- 7. @unnspecialized注释是什么?
- 8. 带注释的servlet模式的Embedded Jetty?
- 9. Embedded Jetty找不到带注释的Servlet
- 10. Springa中使用@autowired注释是什么?自动布线术语的含义
- 11. @命名注释的目的是什么
- 12. 注释中注释方法的首选方式是什么?
- 13. 什么是注释:openURL方法中的(id)注释?
- 14. DTMobileIS的含义是什么?
- 15. if(';')的含义是什么?
- 16. ui.draggable.draggable的含义是什么?
- 17. URL的含义是什么
- 18. android:backgroundDimAmount的含义是什么?
- 19. 什么是java.io.tmp的含义
- 20. !int_variable--?的含义是什么!
- 21. 什么是WindowsIdentity的含义
- 22. CronJobs的含义是什么?
- 23. “error_subcode”的含义是什么
- 24. xmlns:android的含义是什么?
- 25. $ @的含义是什么?
- 26. SootMethod.getSubSignature()的含义是什么?
- 27. view.bounds.origin的含义是什么?
- 28. “UseTaskFriendlySynchronizationContext”的含义是什么?
- 29. DFA的含义是什么?
- 30. configureDefaultServletHandling的含义是什么?
好吧,坚持下去。如果用一个嵌入对象替换实体中的一组字段,“@ Embedded”不会影响数据库。但是如果你将一个类从'@ Entity'改成'@ Embedded',那将会产生相当大的影响! –
* @ TomAnderson *:你是对的。实际上,如果考虑强1-1关系,这就是我考虑使用'@ Embedded'时的意思:要么使用单独的'@ Entity',要么将其与父实体合并,而保留在单独的@ Embedded类中。 –