Spring、事务、Hibernate 过滤器

2024-01-01

我在 Spring 中使用声明式事务。我有一个带有“事务性”注释的服务层。该服务层调用 DAO。我需要在所有 dao 方法中启用 hibernate 过滤器。我不想每次都显式调用 session.enablefilter 。那么有没有一种方法使用 spring transaction aop 等,以便在创建 hibernate 会话时可以调用拦截器?

我的服务层:

@Service("customerViewService")
@Transactional 
 public class CustomerViewServiceImpl extends UFActiveSession implements CustomerViewService {
private static final Logger log = LoggerFactory.getLogger(CustomerViewServiceImpl.class);

private CustomerDAO daoInstance = null;

private CustomerDAO getCustomerDAO() {
    if (daoInstance == null)
        daoInstance = DAOFactory.getDao(CustomerDAO.class);

    return daoInstance;
}
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=DAOException.class)
public CustomerModel getCustomerModel() throws UFClientException {
    CustomerModel model = null;
    try {
        Customer customerTbl = getCustomerDAO().getCustomerDetail(getUserName());
        if (customerTbl == null) {
            log.error("DAO-02: No entry found for Customer id- " + getUserName());
            throw new UFClientException("DAO-02");
        }
        model = DozerConverter.hibernateToDto(customerTbl, CustomerModel.class);
    }
    catch (DAOException e) {
        log.error("DAO-01: Not able to fetch entry from database for customer.");
        throw new UFClientException();
    }
    return model;
}

}

我的 Dao 层

public class CustomerDAOImpl extends HibernateDaoSupport implements CustomerDAO {
@SuppressWarnings("unchecked")
public Customer getCustomerDetail(String email) throws DAOException {

    try {
        List<Customer> customers = getHibernateTemplate().find(sb.toString(), email);
        if (customers.size() == 0)
            return null;

        return customers.get(0);
    }
    catch (Exception e) {
        throw new DAOException(e);
    }
}

感谢你的帮助!!


您可以创建自己的拦截器,并将其应用于具有事务性的方法:

@AroundInvoke("@annotation(transactional)")
public ... handle(Transactional transactional) {
 ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring、事务、Hibernate 过滤器 的相关文章

随机推荐

  • C标准库中realloc是如何实现的?

    我找不到任何源代码realloc函数 它似乎打破了 C 的基本规则 它不需要重新分配内存的长度 在不知道原始内存长度的情况下如何重新分配内存 我自己如何实现这个功能呢 至少有 3 个考虑因素使得实施变得困难或不可能realloc完全在 用户
  • MongoDB,有条件的更新插入或更新

    使用 MongoDB 时 我目前正在表单上进行条件更新插入 作为聚合过程的一部分 简化了很多 db dbname update attr1 value1 attr2 value2 inc avg current value nr 1 fal
  • Plotly:如何在 Excel 中嵌入完全交互式的 Plotly 图形?

    我正在尝试将交互式绘图 或散景 图嵌入到 Excel 中 为此 我尝试了以下三件事 将 Microsoft Web 浏览器用户窗体嵌入到 Excel 中 如下所示 如何在 Excel VBA 表单中嵌入浏览器 https stackover
  • SQLite WHERE 子句中的 if 语句

    我知道我可以在 SQLite 查询中使用 CASE 语句 但我不知道如何在 WHERE 子句中构建它 实际上我在一个很长的 WHERE 子句中有这个 这只是问题所涉及的部分 AND d gt wines year wines maturit
  • 设备无关像素有什么优点?

    我正在学习WPF WPF 使用与设备无关的像素 但我实在无法理解他们 如果大多数其他应用程序都依赖于设备而 WPF 应用程序不是 为什么它们比依赖于设备的像素更好 他们会脱颖而出吗 设备独立像素的优点是 在指定 UI 时 您可以确定 UI
  • “混蛋注射”和“穷人注射”之间的真正区别是什么

    来自 NET 中的依赖注入 https manning com seemann书上我知道对象图应该创建在Composition Root当您使用该应用程序时 这对我来说很有意义IoC Container 在我见过的所有应用程序中 当尝试使用
  • 使用 Diffie Hellman 密钥交换和椭圆曲线加密进行快速加密

    我一直在尝试使用 Diffie Hellman 密钥交换和椭圆曲线加密快速加密和解密字符串 以下是我遵循的代码 SWIFT代码 let attributes String Any kSecAttrKeySizeInBits as Strin
  • iPhone Dev:UIWebView baseUrl 到文档文件夹中的资源而不是应用程序包

    问候 任何人都可以帮助我找到解决以下问题的方法 将 html 加载到UIWeb视图 using 加载HTML字符串并包括 使用baseURL 资源 例如 CSS 用户文件夹中的图像文件文件目录 和不是来自 MainBundle的应用程序 我
  • 如何在Golang中间件中读取请求体两次?

    在中间件中 我想读取请求正文来执行一些检查 然后 请求被传递到下一个中 间件 其中主体将被再次读取 这就是我所做的 bodyBytes ioutil ReadAll req Body req Body ioutil NopCloser by
  • Facebook 点赞计数在 301 重定向后重置

    我的网站上有一篇文章发布在错误的类别中 我想更改类别 并且由于类别名称是 url 的一部分 因此我向更新后的 url 添加了 301 重定向 那篇文章也有几个赞 但在 301 之后 它被重置为 0 个赞 因为对于 Facebook 来说 这
  • Nuxt3 Vite服务器端口

    我需要为 Nuxt3 配置服务器端口 我尝试这样做 nuxt config ts import defineNuxtConfig from nuxt3 export default defineNuxtConfig vite server
  • 使用 PowerShell 从文本文件中提取列

    我必须从本文中解释的文本文件中提取列 使用 Perl 单行从文本文件中提取列 类似于 Unix cut https stackoverflow com questions 2499746 extracting columns from te
  • Magento,将产品名称传递给联系表单

    Magento 初学者您好 我对术语和名称的了解很差 但我会尽力尽可能清楚地解释这一点 我目前正在配置 Magento 联系表单 以便能够从用户那里收集一些数据产品查看页面 更有趣的是 表单还必须发送一些有关管理员将其放置在页面上的产品的数
  • 何时在 iPhone 中释放 NSString

    我有以下方法 NSMutableArray getPaises NSMutableArray paises paises NSMutableArray alloc init while get new row NSString aPais
  • 扫描 BLE 外设并连接到它

    一般来说 对于 BLE 和移动应用程序编码还相当陌生 我尝试了几个演示并遇到了这个https github com RickRedSix BLE4 0 iOS Swift Demo https github com RickRedSix B
  • MongoDb Pipeline Aggregation排序子子文档

    当尝试使用 MongooseJs 在 Mongodb 中按嵌套数组进行排序时 我遇到了一个小问题 a 一个产品包含任务 每个任务又包含子任务 b 任务有一个顺序 每个子任务也有顺序 task order 和 task subtask ord
  • 使用 Javascript 将用户发送至浏览器主页

    是否可以使用 Javascript 获取浏览器的主页 我想在页面上放置一个链接 该链接可以转到浏览器中设置的主页 编辑 简化答案 识别浏览器并 调用window home 适用于所有浏览器 调用window location href 关于
  • Left_join:错误:无法分配大小为“小”Mb 的向量

    我正在处理相当大的数据框 其中一个极端的数据框包含大约 300 000 行和 1 500 个变量 因此 在处理这些数据帧时 我有时会收到错误 Error cannot allocate vector of size x x Gb 大多数情况
  • Jquery 解析 XML

    我想使用 JQuery 读取以下 XML Jquery 应读取 XML 并以 HTML 形式显示以下内容 以下所有内容均应链接 News Articles Destinations Epics Tuesday Night Boulderin
  • Spring、事务、Hibernate 过滤器

    我在 Spring 中使用声明式事务 我有一个带有 事务性 注释的服务层 该服务层调用 DAO 我需要在所有 dao 方法中启用 hibernate 过滤器 我不想每次都显式调用 session enablefilter 那么有没有一种方法