栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate或iBatis还是其他?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate或iBatis还是其他?

在Ibatis中使用动态表名称很简单。只需使用如下表达式:

SELECt * FROM $tableName$

其中

tableName
是参数类的属性。

如果不是不切实际的话(甚至是不可能的话),在Hibernate(或任何JPA提供程序)中使用动态表名是非常困难的。这个问题之前已经提出。

在Ibatis中使用动态数据源将需要您编写一些代码,但不需要那么多。基本上,Ibatis围绕a的概念工作

sqlMapClient
,它具有数据源和可以运行的查询列表。只需
sqlMapClient
为每个数据库创建一个数据库,每个数据库都有不同的数据源,并让它们包括所有相同的查询文件(在sql
map配置中)。

可以编写DAO,使其

sqlMapClients
注入多个,并在运行时选择要使用的DAO 。这是您必须自己编写的部分,但是很简单。

这是基于在编译时知道数据库的前提。如果直到运行时才知道该数据库,则要难一些。仍然有可能,但是我不确定如果从运行时基本上在运行时交换数据源,Ibatis会如何反应

sqlMapClient
。它可能会起作用,它可能会崩溃。您必须尝试一下才能看到。

Hibernate也可以按照相同的原理在这里工作:将多个持久性单元注入DAO,并在运行时使用正确的单元。使用Hibernate(或任何JPA提供程序)时,您必须当心以确保将托管对象存储在正确的持久性单元中。我很容易看到这实际上变成了一场噩梦。

一个普遍的评论:不建议沿着动态表名称或数据库的路径走,所以请真正考虑您在做什么以及为什么这样做,并问自己是否可以通过做出一些更好的设计选择来补救。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号