当我在 class 中更改 Object 的字段时,数据库会自动更新 Spring/Hibernate
Database automatically update by Spring/Hibernate when I change a field of an Object in a class
我有一个名为 VoceMenuUtente
的 class,注释为 @Entity,有 2 个字段:
- 描述
- 标题
我做了一个select来获取数据库中的数据。在屏幕上打印它们之前,我必须向从数据库中获取的值添加一个字符串,所以我这样做:
voceMenuUtente.setDescrizione = voceMenuUtente.getDescrizione + "blablabla";
我在一个名为 TransactionPreDAO
的 class 中制作了它。我有一个切入点 class:
<tx:advice id="txAdviceTransactionPreDAO" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPreDAOTxPointcut" expression="execution(* com.springgestioneerrori.preDAO.TransactionPreDAO.*(..))" />
<aop:advisor advice-ref="txAdviceTransactionPreDAO" pointcut-ref="transactionPreDAOTxPointcut" />
</aop:config>
在此之后,我的数据库自动更新并在 Descrizione 字段中我不再有原始值,但我有原始值加上 "blablabla" ?
为什么会这样? object VoceMenuUtente
没有任何 "update" 方法。也许这取决于切入点。我还在学习Spring,所以可能我犯了一些错误。
是否取决于我在标签<tx:method name="*"/>
中遗漏了read-only="true"
一旦您通过 get
、查询、条件等从数据库加载对象,对象状态就会与持久性上下文相关联,并且对它的任何更改都会自动传播到数据库。
您不必对该对象显式调用 update
。 update
用于将分离的对象重新附加到会话中。之前已持久化但当前未与 Hibernate 会话关联的对象。
如果您想覆盖该默认行为,您可以调用 session.evict(voceMenuUtente)
。这将使对象分离(从持久性上下文中逐出对象)。
我有一个名为 VoceMenuUtente
的 class,注释为 @Entity,有 2 个字段:
- 描述
- 标题
我做了一个select来获取数据库中的数据。在屏幕上打印它们之前,我必须向从数据库中获取的值添加一个字符串,所以我这样做:
voceMenuUtente.setDescrizione = voceMenuUtente.getDescrizione + "blablabla";
我在一个名为 TransactionPreDAO
的 class 中制作了它。我有一个切入点 class:
<tx:advice id="txAdviceTransactionPreDAO" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPreDAOTxPointcut" expression="execution(* com.springgestioneerrori.preDAO.TransactionPreDAO.*(..))" />
<aop:advisor advice-ref="txAdviceTransactionPreDAO" pointcut-ref="transactionPreDAOTxPointcut" />
</aop:config>
在此之后,我的数据库自动更新并在 Descrizione 字段中我不再有原始值,但我有原始值加上 "blablabla" ?
为什么会这样? object VoceMenuUtente
没有任何 "update" 方法。也许这取决于切入点。我还在学习Spring,所以可能我犯了一些错误。
是否取决于我在标签<tx:method name="*"/>
read-only="true"
一旦您通过 get
、查询、条件等从数据库加载对象,对象状态就会与持久性上下文相关联,并且对它的任何更改都会自动传播到数据库。
您不必对该对象显式调用 update
。 update
用于将分离的对象重新附加到会话中。之前已持久化但当前未与 Hibernate 会话关联的对象。
如果您想覆盖该默认行为,您可以调用 session.evict(voceMenuUtente)
。这将使对象分离(从持久性上下文中逐出对象)。