jdbc与jpa实现
我如何在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
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靠拢,因此您的投资并非白费:)