С точки зрения теории,
<xsl:if test="gsmsg/barcode">
проверяет наличие элемента barcode
.
Если вы хотите проверить наличие текстового значения, выполните:
<xsl:if test="string(gsmsg/barcode)">
или:
<xsl:if test="gsmsg/barcode/text()">
Разница в том, что использование демаркации транзакций на основе аннотаций ( @Transactional
) и TransactionTemplate
заключается в использовании TransactionTemplate
связывает вас с инфраструктурой транзакций Spring и означает, что вы будете программно обрабатывать установку статуса транзакции, если транзакция должна быть откатана. Вы можете использовать разграничение транзакций на основе аннотаций с поддержкой транзакций Spring или с транзакциями AspectJ вне контейнера Spring.
См. Также онлайн-документацию для транзакций в Spring .
Классы шаблонов Spring предназначены только для предоставления более удобного API для выполнения операций сохранения - они не работают с транзакциями. Если вы хотите иметь транзакционные операции, вам нужно либо использовать подход аннотации @Transactional, либо использовать TransactionTemplate.
Когда вы используете @transactional с правильной конфигурацией Spring, Spring распознает, что методу нужна транзакция, и будет обрабатывать создание транзакции, фиксацию и закрытие для вас.
Как сказал Скаффман, @transactional не привязан напрямую к классам шаблона. Их можно использовать для любого класса, которому могут потребоваться транзакции.
Означает ли вы, что usin @transactional инкапсулирует мои методы dao с помощью commit, close или при использовании шаблона транзакции Spring (jpatemplate, hibernatetemplate)?