jdbc与jpa实现

jdbc与jpa实现,jdbc,jpa-2.0,Jdbc,Jpa 2.0,我如何在JPA中做到这一点 数据库: School ------ id int PK name varchar state int FK (State(id)) State ----- id int PK desc varchar 爪哇: 代码: ?我可以有一个@实体,它的属性来自不同的表吗 提前谢谢 您应该为学校和状态表创建实体,并在学校实体的状态属性上使用@manytone关系来引用状态 然后,您可以这样查询,浏览从学校到州的关系: List result = em.createQuer

我如何在JPA中做到这一点

数据库:

School
------
id int PK
name varchar
state int FK (State(id))

State
-----
id int PK
desc varchar
爪哇:

代码:

?我可以有一个@实体,它的属性来自不同的表吗


提前谢谢

您应该为
学校
状态
表创建实体,并在
学校
实体的
状态
属性上使用
@manytone
关系来引用状态

然后,您可以这样查询,浏览从学校到州的关系:

List result = em.createQuery("SELECT sc.name, sc.state.desc FROM School sc").getResultList(); 
请注意,列表中的每个元素都是一个
对象[]
。您需要对它们进行迭代,并将值分配给DTO

您还可以使用JPA构造函数表达式来实现类型安全和减少混乱:

List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( sc.name, sc.state.desc) FROM School sc").getResultList();
List dtos=em.createQuery(“从School sc中选择NEW com.example.DTO(sc.name,sc.state.desc)).getResultList();

DTO类型必须具有具有所有相关属性的构造函数。

您应该为
学校
状态
表创建实体,并在
学校
实体的
状态
属性上使用
@manytone
关系来引用状态

然后,您可以这样查询,浏览从学校到州的关系:

List result = em.createQuery("SELECT sc.name, sc.state.desc FROM School sc").getResultList(); 
请注意,列表中的每个元素都是一个
对象[]
。您需要对它们进行迭代,并将值分配给DTO

您还可以使用JPA构造函数表达式来实现类型安全和减少混乱:

List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( sc.name, sc.state.desc) FROM School sc").getResultList();
List dtos=em.createQuery(“从School sc中选择NEW com.example.DTO(sc.name,sc.state.desc)).getResultList();

DTO类型必须有一个具有所有相关属性的构造函数。

谢谢kostja!这就是我所想的,但我想确保我需要school->state中的object属性,而不是primitive。所以JPA会比JDBC慢很多…为什么人们会使用它?@leccionesonline-不客气:)JPA作为JDBC抽象,在大多数情况下确实会比JDBC慢,但并非所有情况下都慢-JPA提供了适当的缓存,而JDBC没有。不过,我还没有看到真正的JPA-JDBC基准测试,所以我不能说慢了多少。我使用JPA的原因是JDBC需要更多的样板代码,这在编写和阅读时都会消耗开发人员的时间implementation@leccionesonline我认为他们仍然保留JDBC功能(),但Spring数据肯定正在向JPA靠拢,所以您的投资并非白费:)谢谢kostja!这就是我所想的,但我想确保我需要school->state中的object属性,而不是primitive。所以JPA会比JDBC慢很多…为什么人们会使用它?@leccionesonline-不客气:)JPA作为JDBC抽象,在大多数情况下确实会比JDBC慢,但并非所有情况下都慢-JPA提供了适当的缓存,而JDBC没有。不过,我还没有看到真正的JPA-JDBC基准测试,所以我不能说慢了多少。我使用JPA的原因是JDBC需要更多的样板代码,这在编写和阅读时都会消耗开发人员的时间implementation@leccionesonline我认为他们仍然保留JDBC功能(),但Spring数据肯定正在向JPA靠拢,因此您的投资并非白费:)