Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有农业/组合的Spring框架JDBC DAO

带有农业/组合的Spring框架JDBC DAO
EN

Stack Overflow用户
提问于 2010-06-21 13:39:49
回答 1查看 3.9K关注 0票数 4

我有一个应用程序,它已经在使用Spring Framework和Spring JDBC,其中有一个使用SimpleJdbcTemplate和RowMapper类的DAO层。对于从数据库读取的小类结构,这似乎工作得很好。但是,我们需要加载包含其他对象集合的对象,这些对象仍然包含其他对象的集合。

这个问题的“显而易见”解决方案是创建一个命名的RowMapper类或我们的对象,并在构造函数中传递对适当DAO对象的引用。例如:

代码语言:javascript
运行
AI代码解释
复制
public class ProjectRowMapper implements ParameterizedRowMapper {

    public ProjectRowMapper(AccountDAO accountDAO, ) {
        this.accountDAO = accountDAO;
    }

    public Project mapRow(ResultSet rs, int rowNum) throws SQLException {
        Project project= new Project ();
        project.setProjecttId( rs.getString("project_id") );
        project.setStartDate( rs.getDate("start_date") );
        // project.setEtcetera(...);

        // this is where the problems start
        project.setAccounts( accountDAO.getAccountsOnProject(project.getProjectId()) );
     }
}

问题是,即使ProjectDAO和Account DAO共享同一个DataSource实例(在我们的示例中,这是一个连接池),任何数据库访问都是通过不同的连接完成的。

如果对象层次结构甚至有三层深,使用此实现会导致(a)框架对datasource.getConnection()的多次调用,以及(2)更糟糕的结果,因为我们限制了连接池中允许的连接数量,当多个线程试图从数据库加载项目时,可能会出现竞争情况。

在Spring中有没有更好的方法(不需要另一个成熟的ORM工具)来实现这样的对象层次结构的加载?

谢谢,保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-26 13:36:37

我猜您不使用ORM是有原因的,ORM是解决这类问题的理想工具。

多个连接的问题是递归调用另一个DAO。为了避免使用额外的连接,Account对象应该在项目实例被获取之后检索。在获取项目时,帐户it也会被获取,但不会“实例化”到account实例-它们仍然是it列表,然后在项目DAO完成其工作后填充。

例如,您可以构建一个采用ID列表和DAO实现的自定义列表类型。该列表仅填充ProjectRowMapper中的is,并分配给项目的accounts属性。ID对于列表是私有的--它们不是列表的“内容”,而是以后产生真实内容的一种手段。

一旦Project DAO从RowMapper获取了项目,它就可以指示列表获取保存在列表中的in的帐户。这些帐户是作为的非嵌套操作获取的,因此整个过程在任何时候都只使用一个连接。然而,fetch是在DAO方法的作用域内完成的,所以fetch是急切地完成的-所以没有延迟加载问题需要处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3085124

复制
相关文章
android 两个APK调用
@Override     public boolean onTouchEvent(MotionEvent event) {          ComponentName componetName = new ComponentName(                  //这个是另外一个应用程序的包名                 "com.apk2",                 //这个参数是要启动的Activity                 "com.apk2.MainActivity"); //        Intent intent= new Intent("chroya.foo");         Intent intent= new Intent();         //我们给他添加一个参数表示从apk1传过去的         Bundle bundle = new Bundle();         bundle.putString("arge1", "这是跳转过来的!来自apk1");         intent.putExtras(bundle);         intent.setComponent(componetName);         startActivity(intent);         return super.onTouchEvent(event);     }
用户2192970
2019/02/21
4430
详解如何把.py文件转.apk
Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用它来将Python程序打包为安卓的apk安装文件。以下是在win7 64位环境中的具体配置步骤(安装和配置的过程中会下载很多东西,确保你能够稳定地访问外网--即能访问YouTuBe等网站)
用户6367961
2019/09/29
11.9K0
PhalApi-APK--APK文件解包处理
#PhalApi-APK -- APK文件解包处理 ##前言 应为笔者这边涉及到的项目有需求对APK进行解包的操作,所以贡献此扩展希望大家喜欢 附上: 官网地址:http://www.phalapi.
喵了个咪233
2018/03/02
1.9K0
PhalApi-APK--APK文件解包处理
.apk反编译_apk反编译教程
大家好,又见面了,我是你们的朋友全栈 原文作者:[color=blue][b]lpohvbe[/b][/color] 原文地址:[url]http://blog.csdn.net/lpohvbe/article/details/7981386[/url] 本人接触不久,有错误望请各位神牛不吝赐教,仅仅希望把自己这段时间研究的东西分享一下,如果可以帮助到有需要的童鞋万感荣幸。欢迎评论转载,但请加上转载来源谢谢!请尊重开发者劳动成果!请勿用于非法用途!
全栈程序员站长
2022/09/29
9.6K0
细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
大部分开发者对apk签名还停留在APK v2,对APK v3和APK v4了解很少,而且网上大部分文章讲解的含糊不清,所以根据官网文档重新整理一份。
BennuCTech
2021/12/10
6.6K0
细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
APK安装流程详解9——PackageParser解析APK(上)
为了让咱们更好的理解谷歌的安卓团队对PackageParser的定位,我们来看下PackageParser的注释
隔壁老李头
2018/08/30
5.9K0
APK安装流程详解9——PackageParser解析APK(上)
linux可以运行apk(shell安装apk命令)
之前因为课程需要,也算是粗浅地了解过Linux,但是只是懂得一些编译内核,编译模块的知识,并没有把Linux当做日常使用的操作系统。但是最近因为实验的原因,对Linux有了兴趣,开始尝试将Linux作为日常使用的操作系统。特整理记录一些使用Linux常用知识,以供日后参考。
全栈程序员站长
2022/07/31
7K0
apk 反编译(使用android逆向助手,进行反编译apk,查看apk源码)
第二步:将apk文件拷贝到逆向助手的apktool目录,在逆向助手的apktool目录下按住shift同时点击鼠标右键,选择“在此处打开命令窗口,即CMD”
Twcat_tree
2022/11/30
3.9K0
apk 反编译(使用android逆向助手,进行反编译apk,查看apk源码)
【译】使用 APK Analyzer 分析你的 APK
本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对 《Analyze Your Build with APK Analyzer》 的翻译。 Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。使用APK Analyzer不仅能够减少你花在debug上的时间,而且还能减少你的APK大小。使用APK Analyzer,你能够实现: 查看APK中文件的绝对大小和相对大小。(译注:相对大小指的是该文件占整个APK大小的百分比) 理解DEX文件
腾讯Bugly
2018/03/23
2.5K0
APK安装流程详解10——PackageParser解析APK(下)
其中第一个parseBaseApk(File, AssetManager, int)方法,已经讲解过了,请参考APK安装流程详解9——PackageParser解析APK(上)中 五、PackageParse#parseMonolithicPackage(File, int)方法解析
隔壁老李头
2018/08/30
4.9K0
APK安装流程详解10——PackageParser解析APK(下)
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
想进大厂,就关注「 程序亦非猿 」 时不时 8:38 推送优质文章,觉得有用,置顶加星标
程序亦非猿
2019/08/21
1.8K0
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
9.5.3 Android Apk 反编译 & 9.5.4 Android Apk 加密
首先说一下,何为反编译,简单地说,从源码开始,经过集成开发环境编译以及签名之后得到apk文件的这个过程,我们称之为“编译”;“反编译”的话,顾名思义,粗略地说就是与“编译”相反的过程咯,也就是从apk文件开始,经过一系列工具解压最后得到源码的过程。当然,顺逆之言,说的只是起始点的逆反置换,个中具体的过程还是不尽相同的。
凌川江雪
2019/02/25
2.2K0
9.5.3 Android Apk 反编译 & 9.5.4 Android Apk 加密
【Android 逆向】APK 加壳脱壳现状 | 判断 APK 是否加壳 | APK 逆向流程
加壳覆盖率很高 : 当前的应用 , 基本上 90% 都会加壳 , 各大加固厂商 , 基本都 提供免费的加壳服务 ; 很难找到不加壳的应用 ;
韩曙亮
2023/03/30
4.1K0
【原创】Apktools反编译APK,查看apk信息,常用于安装apk失败原因分析。
目的:鉴于部分apk无法安装我们又无法知道原因时,我们需要用到工具apktools进行Apk的反编译
零点
2023/03/03
2.1K0
【原创】Apktools反编译APK,查看apk信息,常用于安装apk失败原因分析。
capacitor apk升级
npm install cordova-plugin-apkupdater import ApkUpdater from 'cordova-plugin-apkupdater'; ApkUpdater.download( 'https://your-update-server.com/update.apk', { onDownloadProgress: console.log }, function () { ApkUpdater.insta
Laikee
2022/04/25
8940
.apk 成为历史!
早在 2018 年 5 月的 Google I/O 大会上,Google 就介绍了 Android App Bundle(AAB)格式,作为其现代化开发的一部分。今年 8 月,AAB 格式将成为全新上架到 Google Play Store 应用的默认格式,已经上架的老应用暂时不会受到影响。
芋道源码
2021/07/13
9230
APK签名原理
网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。
全栈程序员站长
2022/07/01
8190
获取apk签名
方法一 1.解压apk 2.在META_INF目录下找到xxx.RSA文件 3.执行keytool -printcert -file xxxx.RSA目录
全栈程序员站长
2022/08/22
9680
APK 瘦身优化
官网:https://ibotpeaches.github.io/ApkTool apktool d students.apk
Yif
2020/04/23
1.4K0
APK 瘦身优化
Apk 签名验证
当app进行反编译后修改,再回编译,若出现闪退的情况时,则有可能是由于程序本身已存在签名验证,才会出现闪退,今天分享如何解决因签名验证而出现的闪退现象。
全栈程序员站长
2022/09/06
1.6K0
Apk 签名验证

相似问题

把肥皂包成捆

10

从两个apk /模块创建单个apk

12

如何将两个APK连接成一个APK?

12

把长值放进捆中

20

Android - Apk内部APK

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档