标签: spring-data-jpa

Spring Data JPA中的CrudRepository和JpaRepository接口有什么区别?

Spring Data JPA CrudRepositoryJpaRepository接口有什么区别?

当我在网上看到这些例子时,我看到它们在那里可以互换使用.他们之间有什么区别?你为什么要用一个而不是另一个?

java spring jpa spring-data spring-data-jpa

603
推荐指数
8
解决办法
22万
查看次数

如何在Spring Data中使用OrderBy和findAll

我正在使用spring数据,我的DAO看起来像

public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
    public findAllOrderByIdAsc();   // I want to use some thing like this
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,注释行显示了我的意图.Spring Data可以提供内置功能,使用这种方法通过ASC/DESC查找某些列的所有记录顺序吗?

spring spring-data spring-data-jpa

246
推荐指数
6
解决办法
25万
查看次数

Hibernate和Spring Data JPA有什么区别

Hibernate和Spring Data JPA之间的主要区别是什么?什么时候不应该使用Hibernate或Spring Data JPA?另外,什么时候Spring JDBC模板的性能比Hibernate/Spring Data JPA好?

java spring hibernate jpa spring-data-jpa

182
推荐指数
4
解决办法
8万
查看次数

如何使用spring-data-jpa更新实体?

好吧,这个问题几乎说明了一切.使用JPARepository如何更新实体?

JPARepository只有一个save方法,它不会告诉我它是否实际创建或更新.例如,我将一个简单的Object插入数据库User,它有三个字段:firstname和lastname以及age:

 @Entity
 public class User {

  private String firstname;
  private String lastname;
  //Setters and getters for age omitted, but they are the same as with firstname and lastname.
  private int age;

  @Column
  public String getFirstname() {
    return firstname;
  }
  public void setFirstname(String firstname) {
    this.firstname = firstname;
  }

  @Column
  public String getLastname() {
    return lastname;
  }
  public void setLastname(String lastname) {
    this.lastname = lastname;
  }

  private long userId;

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  public long getUserId(){
    return this.userId;
  }

  public …
Run Code Online (Sandbox Code Playgroud)

java jpa spring-data-jpa

171
推荐指数
8
解决办法
31万
查看次数

Spring CrudRepository findByInventoryIds(List <Long> inventoryIdList) - 相当于IN子句

在Spring CrudRepository中,我们是否支持字段的"IN子句"?即类似于以下内容?

 findByInventoryIds(List<Long> inventoryIdList) 
Run Code Online (Sandbox Code Playgroud)

如果没有这样的支持,可以考虑哪些优雅的选择?针对每个id的触发查询可能不是最佳的.

java spring jpa spring-data spring-data-jpa

150
推荐指数
3
解决办法
16万
查看次数

如何向Spring Data JPA添加自定义方法

我正在研究Spring Data JPA.考虑下面的示例,我将默认使用所有crud和finder功能,如果我想自定义查找器,那么也可以在界面本身轻松完成.

@Transactional(readOnly = true)
public interface AccountRepository extends JpaRepository<Account, Long> {

  @Query("<JPQ statement here>")
  List<Account> findByCustomer(Customer customer);
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何为上述AccountRepository添加一个完整的自定义方法及其实现?由于它的接口我无法在那里实现该方法.

java spring-data spring-data-jpa

144
推荐指数
8
解决办法
15万
查看次数

Spring Data-JPA与JPA:有什么区别?

我对Spring Data-JPA和JPA之间的区别感到有点困惑.我知道JPA它是使用流行的ORM技术将Java对象持久化到关系数据库的规范,即换句话说,JPA提供接口和其他ORM技术,实现称为JPA提供程序的接口,例如Hibernate.

现在究竟是什么Spring Data JPA.Spring Data JPA是否在JPA上增加了一些功能(接口),仍然只是指定它还是JPA提供者?

我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错).所以我的意思是使用'Spring Data JPA + Hibernate'或仅使用'Hibernate'指导它是如何不同的?

java orm hibernate jpa-2.0 spring-data-jpa

137
推荐指数
3
解决办法
7万
查看次数

当使用getOne和findOne方法时,Spring Data JPA

我有一个用例,它调用以下内容:

@Override
@Transactional(propagation=Propagation.REQUIRES_NEW)
public UserControl getUserControlById(Integer id){
    return this.userControlRepository.getOne(id);
}
Run Code Online (Sandbox Code Playgroud)

观察@Transactionalhas Propagation.REQUIRES_NEW,存储库使用getOne.当我运行该应用程序时,收到以下错误消息:

Exception in thread "main" org.hibernate.LazyInitializationException: 
could not initialize proxy - no Session
...
Run Code Online (Sandbox Code Playgroud)

但是,如果我改变getOne(id)findOne(id)一切工作正常.

顺便说一下,就在用例调用getUserControlById方法之前,它已经调用了insertUserControl方法

@Override
@Transactional(propagation=Propagation.REQUIRES_NEW)
public UserControl insertUserControl(UserControl userControl) {
    return this.userControlRepository.save(userControl);
}
Run Code Online (Sandbox Code Playgroud)

两种方法都是Propagation.REQUIRES_NEW,因为我正在进行简单的审计控制.

我使用该getOne方法,因为它是在JpaRepository接口中定义的,我的Repository接口从那里扩展,我当然正在使用JPA.

JpaRepository接口扩展自CrudRepository.该findOne(id)方法定义于CrudRepository.

我的问题是:

  1. 为什么失败的getOne(id)方法?
  2. 什么时候应该使用这种getOne(id)方法?

我正在使用其他存储库并且所有使用该getOne(id)方法并且所有工作正常,只有当我使用Propagation.REQUIRES_NEW …

jpa spring-data spring-data-jpa

135
推荐指数
4
解决办法
15万
查看次数

对于大型项目,Spring Data JPA与Hibernate有何不同?

我很难决定是否应该坚持使用Hibernate来完成一个新项目,或者尝试使用JPA和新的Spring Data实现.

Spring Data框架是针对具有适度查询要求的大型项目还是小型项目?

虽然我通过使用@Query注释确实看到了减少代码的优势,但您对动态查询有何看法?当你想要实现一个非常复杂的save()方法时呢?

文档说明要创建主存储库实现的自定义接口和实现,但是如果需要访问crud存储库本身的任何超级方法呢?crud存储库实现了自定义存储库 - 而不是相反.这似乎是一个奇怪的设计.

我很不确定这个框架是否能够应对复杂和大型应用程序的挑战.我从未遇到过Hibernate的许多问题,而且我正在考虑坚持使用旧的可靠而不是使用Spring Data JPA.

我该怎么办?如果我使用Spring Data JPA,我会遇到哪些无法预料的并发症和成本?

java spring hibernate jpa spring-data-jpa

127
推荐指数
3
解决办法
8万
查看次数

Spring JPA选择特定列

我正在使用Spring JPA来执行所有数据库操作.但是我不知道如何从Spring JPA中的表中选择特定的列?

例如:
SELECT projectId, projectName FROM projects

java jpa spring-data-jpa

119
推荐指数
9
解决办法
21万
查看次数

标签 统计

spring-data-jpa ×10

java ×8

jpa ×7

spring ×5

spring-data ×5

hibernate ×3

jpa-2.0 ×1

orm ×1