spring数据import numpy as np
from PIL import image
def hue_shift(img, amount):
hsv_img = img.convert('HSV')
hsv = np.array(hsv_img)
hsv[..., 0] = (hsv[..., 0]+amount) % 360
new_img = Image.fromarray(hsv, 'HSV')
return new_img.convert('RGB')
和hibernate save
之间有什么区别?他们的工作方式是否相同?
答案 0 :(得分:4)
Hibernate的Session.save()
是一种专有的Hibernate操作,在JPA中不存在。它基本上与EntityManager.persist()
做同样的事情,除了它保证生成ID并返回它。但是,相同的级联不适用,因为Hibernate具有专有的SAVE级联选项,当然在JPA中存在。
Spring-data-jpa的SimpleJpaRepository的保存操作如果实体被认为是新的,则调用EntityManager.persist()
;如果实体不被认为是新的,则调用EntityManager.merge()
。
所以不,他们不是一回事,也不会以同样的方式工作。
答案 1 :(得分:4)
如果您完全了解JPA,Hibernate和Spring Data JPA之间的关系,您会更好地理解这一点。
JPA(Java Persistence API)是用于在Java中执行ORM(object-relational mapping)的标准接口规范。请注意,它本身并不实现接口。您需要一个实现JPA规范的库才能在您的软件中使用它。
Hibernate是JPA的一个实现 - 它是一个实现JPA规范的库。
Spring Data JPA是Spring Framework的子项目,它可以更轻松地使用JPA并将其集成到Spring Framework的其余部分中。
如果您使用Spring Data JPA,您还需要在项目中实现JPA,例如Hibernate。
您使用Spring Data JPA提供的接口和类,并与底层JPA实现(Hibernate)进行对话,以实际与数据库通信。
通过Spring Data保存实体JPA最终会调用Hibernate来保存实体,所以最终效果是一样的。
但是:如果您使用的是Spring Data JPA,则不应直接使用Hibernate。实际上,您不应该在自己的代码中直接引用Hibernate。通过在代码中直接使用Hibernate,您将完全绕过Spring Data JPA。