Spring data jpa Spring数据JPA更新:首选方式

Spring data jpa Spring数据JPA更新:首选方式,spring-data-jpa,Spring Data Jpa,我试图使用spring-data-jpa只更新一个36列的表中的三列。我正在讨论以下两种方法,并做了大量的研究,但无法得出哪种方法是首选方法的结论。然而,我倾向于第二种方法,这样我就不必使用@Column注释和getter/setter创建实体类 第一种方法 @Repository public interface MyRepository extends JpaRepository<MyObject , Long> { @Query("update MyTable

我试图使用
spring-data-jpa
只更新一个36列的表中的三列。我正在讨论以下两种方法,并做了大量的研究,但无法得出哪种方法是首选方法的结论。然而,我倾向于第二种方法,这样我就不必使用
@Column
注释和
getter/setter
创建实体类

第一种方法

@Repository
  public interface MyRepository extends JpaRepository<MyObject  , Long> {

     @Query("update MyTable c set c.name= :name WHERE c.id = :id")
     void updateName(@Param("id") Long id, @Param("name") String name);

  }
使用
springdatajpa
我将首先使用id获取实体对象,更新字段并保存它

MyObject object= myRepository.getOne(id);
object.setName("updated Name);
myRepository.save(object);
第二种方法

@Repository
  public interface MyRepository extends JpaRepository<MyObject  , Long> {

     @Query("update MyTable c set c.name= :name WHERE c.id = :id")
     void updateName(@Param("id") Long id, @Param("name") String name);

  }
@存储库
公共接口MyRepository扩展了JpaRepository{
@查询(“updatemytable c set c.name=:name,其中c.id=:id”)
void updateName(@Param(“id”)长id、@Param(“name”)字符串名);
}
哪种方法是解决像我这样的问题的首选方法。

getOne(id)
只获取引用(代理)对象,而不从数据库获取它。在这个引用上,您可以设置所需内容,在save()上,它只执行一个SQL UPDATE语句。而第二种方法是从数据库中获取值,我认为这需要更多的成本

您可以参考内部工作