标签: spring-data-jpa

Spring Boot应用程序启动速度非常慢

我有一个简单的Spring Boot应用程序,它连接到PostgreSQL数据库并充当JSON服务.不知怎的,创业公司变得非常慢,见时间10:37:10和10:38:00:

2015-05-09 10:37:09.649  INFO 20880 --- [lication.main()] o.apache.catalina.core.StandardService   : Starting service Tomcat
2015-05-09 10:37:09.651  INFO 20880 --- [lication.main()] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.20
2015-05-09 10:37:09.767  INFO 20880 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2015-05-09 10:37:09.767  INFO 20880 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2970 ms
2015-05-09 10:37:09.979  INFO 20880 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2015-05-09 10:37:09.985  INFO 20880 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-05-09 …
Run Code Online (Sandbox Code Playgroud)

postgresql spring spring-data spring-data-jpa spring-boot

31
推荐指数
4
解决办法
2万
查看次数

如何使用JpaRepository进行批量(多行)插入?

当从服务层调用long 的saveAll方法时,Hibernate的跟踪日志记录显示每个实体发出的单个SQL语句.JpaRepositoryList<Entity>

我可以强制它进行批量插入(即多行)而无需手动操作EntityManger,事务等甚至原始SQL语句字符串?

对于多行插入,我的意思不仅仅是从:

start transaction
INSERT INTO table VALUES (1, 2)
end transaction
start transaction
INSERT INTO table VALUES (3, 4)
end transaction
start transaction
INSERT INTO table VALUES (5, 6)
end transaction
Run Code Online (Sandbox Code Playgroud)

至:

start transaction
INSERT INTO table VALUES (1, 2)
INSERT INTO table VALUES (3, 4)
INSERT INTO table VALUES (5, 6)
end transaction
Run Code Online (Sandbox Code Playgroud)

而是:

start transaction
INSERT INTO table VALUES (1, 2), (3, 4), (5, 6)
end transaction
Run Code Online (Sandbox Code Playgroud)

在PROD中,我使用的是CockroachDB,性能差异很大.

下面是一个重现问题的简单示例(H2为简单起见). …

hibernate spring-data-jpa kotlin spring-boot cockroachdb

31
推荐指数
3
解决办法
4万
查看次数

在spring-data项目中使用@Version

我一直在使用带有spring-data的RESTful web服务.几天前,发布了一个特殊的spring-data jpa REST框架.

现在我注意到在这个框架中使用@Version的能力.此版本是由自己生成还是您需要手动执行此操作?

它可以自己使用@Version吗?(这样我就不必将任何内容更改为现有的存储库/域等...)

我是否需要做一些额外的配置才能使用@Version?

java hibernate spring-data spring-data-jpa spring-data-rest

30
推荐指数
2
解决办法
2万
查看次数

在Spring Data JPA存储库中使用泛型

我有许多简单的对象类型需要持久化到数据库.我正在使用Spring JPA来管理这种持久性.对于每个对象类型,我需要构建以下内容:

import org.springframework.data.jpa.repository.JpaRepository;

public interface FacilityRepository extends JpaRepository<Facility, Long> {
}


public interface FacilityService {
    public Facility create(Facility facility);
}

@Service
public class FacilityServiceImpl implements FacilityService {

    @Resource
    private FacilityRepository countryRepository;

    @Transactional
    public Facility create(Facility facility) {
        Facility created = facility;
        return facilityRepository.save(created);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想到有可能用三个基于泛型的类替换每个对象类型的多个类,从而节省了大量的样板编码.我不确定如何去做,事实上如果这是一个好主意?

java spring jpa spring-data spring-data-jpa

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

您是否应该在JPA中为每个表创建一个存储库?

您是否应该在JPA中为每个表创建一个存储库?如果没有,您如何解决存储库数据库中的泛型?

例如,下面是一个StoreRepository.它处理对象的CRUD操作Store.如果我希望存储库也保存一个StoreEvent对象,我将如何更改下面的接口以容纳这两个对象?

@Repository
public interface StoreRepository extends JpaRepository<Store, String> {
    public Store findByGuid(String guid);
}
Run Code Online (Sandbox Code Playgroud)

java jpa spring-data spring-data-jpa

30
推荐指数
1
解决办法
8539
查看次数

带JPA的Spring Boot:将@Entity移动到不同的包

我在使用带JPA的Spring-Boot的第一步时遇到了麻烦.我从Git使用Gradle的一个非常简约的例子开始.

现在只需转移Customer到另一个包,让我们说hello2结果是异常Caused by: java.lang.IllegalArgumentException: Not an managed type: class hello2.Customer.我试着补充一下

@ComponentScan(basePackageClasses= {Customer.class}) // AND OR @EnableJpaRepositories(basePackageClasses= {Customer.class})

Application,但没有成功.

我究竟做错了什么?

spring jpa spring-data spring-data-jpa spring-boot

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

Spring Data JPA:查询ManyToMany

我有实体UserTest

@Entity
public class User {
    private Long id;
    private String userName;
}

@Entity
public class Test {
    private Long id;

    @ManyToMany
    private Set<User> users;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过用户实体获得所有测试:

public interface TestRepository extends JpaRepository<EventSettings, Long> {
    List<Test> findAllByUsers(User user);
}
Run Code Online (Sandbox Code Playgroud)

但是我可以使用哪个查询来查找所有测试userName

java spring jpa spring-data spring-data-jpa

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

错误:达到获取方法 Json 对象以及文件部分的最大响应大小(Spring boot Rest api)

我是 java spring rest 的新手,我一直坚持使用 http 请求方法 get 和 put,特别是下面的代码。我已经成功上传带有图像文件的实体(事件)。但是,我无法在不遇到以下错误的情况下执行 get 方法。我更多地考虑了我的控制器的 get 方法,它缺少一些东西,因为我得到了一个结果,但内容类型很奇怪。

邮差

获取 http://localhost:8080/stem/events
错误:已达到最大响应大小

浏览器

[{"id":1,"title":"Indoor luchtkwaliteit = Frisse kop","description":"Met het meettoestel Frisse Kop gaan we aan de slag. We ontwerpen en bouwen dit helemaal zelf! 我们学习 3D-ontwerpen en gaan hier zelf mee aan de slag. ","startDate":null,"endDate":null,"startHour":null,"endHour":null,"image":{"id":1,"fileName": "frissekop.jpg","fileType":"image/jpeg","content":"/9j/4AAQSkZJRgABAQEASABIAAD/4S3eRXhpZgAATU0AKgAAAAgADAEPAAIAAAAGAAAAngEQAAIAAAAQAAAApAESAAMAAAABAAEAAAAEaAAUAAAABAAAAtAEbAAUAAAABAAAAvAEoAAMAAAABAAIAAAEyAAIAAAAUAAAAxAE7AAIAAAABAAAAA AITAAMAAAABAAIAAIKYAAIAAAABAAAAAIdpAAQAAAABAAAA2IglAAQAAAABAAAgTAAAIGBDYW5vbgBDYW5vbiBFT1MgMjAwMEQAAAAASAAAAAEAAABIAAAAATIwMjA6MDg6MjEgMTM6MDI6MTcAACeCmgAFAAAAAQAAArKCnQAFAAAAAQAAArqIIgADAAAAAQACACIJwADAAAAAQMg AACIMAADAAAAAQACAACIMgAEAAAAAQAAAyCQAAAHAAAABDAyMzCQAwACAAAAFAAAAsKQBAACAAAAFAAAAtaRAQAHAAAABAECAwCSAQAKAAAAAQAA

有人可以帮我根据Image和Event的关系实现Get和update吗?

@Entity
@Table(name = "events")
@Data
public class Event {
    @Id
    @GeneratedValue
    private Integer id;
    private String title;
    @Lob
    private String description;
 
    
    @OneToMany(mappedBy = "event",cascade = …
Run Code Online (Sandbox Code Playgroud)

spring file-upload file spring-data-jpa postman

29
推荐指数
1
解决办法
6万
查看次数

存在Spring数据CrudRepository

当我扩展CrudRepository接口时,我的子接口中有exists(ID)方法.我可以写findBy<property>方法.

有可能以某种方式编写existBy<property>将返回的方法boolean.或者用@Query(jpa query)它来注释它将返回boolean.

我知道我可以做select count(*)并返回long,但是我必须!=0检查我的服务层.

spring spring-data spring-data-jpa

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

Spring数据JPA和可以为null的参数

我的理解是,使用Spring数据JPA我不能有一个查询方法来获取列等于给定的非null方法参数的所有行,并且当method参数为null时,使用相同的方法获取此列为NULL的所有行.

那是对的吗?

所以我必须在我的JAVA代码中区分它,我必须使用一个单独的查询方法显式询问空值,如下例所示?

// Query methods
List<Something> findByParameter(Parameter parameter);
List<Something> findByParameterIsNull();

...

List<Something> result = new ArrayList<>();

if (parameter == null)
  result = findByParameterIsNull();
else
  result = findByParameter(parameter);
Run Code Online (Sandbox Code Playgroud)

这很糟糕,如果我有4个参数可以为null并且必须编码16种不同的查询方法.

java parameters null spring-data-jpa

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