使用OR映射器是否有意义?
我把这个问题放在堆栈溢出处,因为这是我所知道的最好的地方,可以找到愿意提供帮助和意见的智能开发人员.
我的推理如下:
1.)SQL在哪里?
a.)在我参与的每个专业项目中,数据的安全性是关键要求.存储过程为控制访问和审计提供了一个自然的网关.
b.)生产中的应用程序问题通常可以在表和存储过程之间解决,而无需推出新的构建.
2.)如何控制生成的SQL?我信任解析树以生成有效的SQL.我在SQL-Server和Oracle中优化SQL方面有相当多的经验,但如果我再也不必这样做,就不会感到受骗.:)
3.)如果我从存储过程中获取数据,使用OR-Mapper有什么意义?
我已将存储库模式与本地通用数据访问层一起使用.如果需要缓存集合,我会缓存它.我也有在小型CRUD应用程序上使用EF的经验,并且有助于调整遇到性能问题的NHibernate应用程序.所以我有点偏颇,但愿意学习.
在过去的几年里,我们都听到很多受人尊敬的开发人员提倡使用特定的OR-Mappers(实体框架,NHibernate等......).
任何人都可以告诉我为什么有人应该转向ORM主流项目的主流开发?
编辑:http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html似乎对这个话题进行了强有力的讨论,但它已经出来了约会
另一个编辑:每个人似乎都同意存储过程将用于重型企业应用程序,因为它们具有性能优势,并且能够将编程逻辑添加到数据附近.
我看到支持OR映射器的最有力论据是开发人员的工作效率.
我怀疑ORM运动的一个重要推动因素是开发人员对剩余持久性不可知的偏好(不关心数据是在内存中[除非缓存]还是在数据库上).
ORM似乎是本地和小型Web应用程序的优秀节省时间.
也许我所看到的最好的建议来自client09:使用ORM设置,但使用存储过程来处理数据库密集型的东西(当ORM看起来不够时,使用AKA).
你如何将文件的内容读入ArrayList<String>Java中?
这是文件内容:
cat
house
dog
.
.
.
Run Code Online (Sandbox Code Playgroud)
只需阅读每个单词ArrayList.
为什么会说"内存访问违规"?
char* str = "HelloGuys";
int len = strlen(str);
for (int i=0; i<(len/2); ++i){
char t = str[len-i-1];
str[len-i-1] = str[i]; //error
str[i] = t;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在X86_64 Linux上进行一些测试,并且我想知道如何使malloc()分配大于4 GiB范围内的返回地址
我是否必须使用单独的/自定义库覆盖malloc还是有其他简单的方法来做到这一点?
谢谢。
- - 编辑 - -
我感兴趣的是将地址当作值(uintptr_t)时的地址,它的虚拟地址还是物理地址都没有关系,因为我想要的就是该地址必须是大于4GiB 的值
我在Linux x86_64上将gcc(4.2.1)与一起使用-m64
(希望我把问题弄清楚了)
我正在尝试反序列化,Generic<T> where T : struct但是当我调用时,ctor.Invoke(args); 我得到异常"无法创建实例,因为Type.ContainsGenericParameters为true".
如何传递我想要的泛型类型?
我有以下(简化的)MySQL架构:
companies
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
users
+----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | | | …Run Code Online (Sandbox Code Playgroud) 我在播放存储在原始资源中的mp3文件时遇到了问题:当文件首次开始播放时,它可能会生成四分之一秒的声音,然后重新启动.(我知道这基本上是这里描述的问题的重复,但是那里提供的解决方案对我来说没有用.)我已经尝试了几个方面并且在这个问题上取得了一些进展,但它并没有完全修复.
这是我设置播放文件的方式:
mPlayer.reset();
try {
AssetFileDescriptor afd = getResources().openRawResourceFd(mAudioId);
if (afd == null) {
Toast.makeText(mOwner, "Could not load sound.",
Toast.LENGTH_LONG).show();
return;
}
mPlayer.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
afd.close();
mPlayer.prepare();
} catch (Exception e) {
Log.d(LOG_TAG, "Could not load sound.", e);
Toast.makeText(mOwner, "Could not load sound.", Toast.LENGTH_LONG)
.show();
}
Run Code Online (Sandbox Code Playgroud)
如果我退出活动(调用mPlayer.release())并返回它(创建一个新的MediaPlayer),口吃通常(但不总是)消失 - 只要我加载相同的声音文件.我尝试了几件没有任何区别的事情:
MediaPlayer.create(getContext(), mAudioId),并跳到调用setDataSource(...)和prepare().然后我注意到LogCat总是在播放开始时显示这一行:
DEBUG/AudioSink(37): bufferCount (4) is too small and increased to 12
Run Code Online (Sandbox Code Playgroud)
它让我想知道口吃是否是由于明显的重新缓解.这导致我尝试别的东西:
prepare(),拨打电话mPlayer.start()并立即拨打电话 …应用程序中有Akka(Java API)actor(UntypeActor)和消息.根据API合同,如果将一些消息发送给同一个actor,它们将被逐行排队并进行处理.
我想根据队列大小处理actor中的消息.基本上:在Actor.onReceive()中处理当前的消息时,是否至少还有一个消息排队?什么是Akka存档方式?
我们正在讨论如何设计我们的应用程序.
使一些相对较大或使用很多专用的dll.
有时我们在不同的产品中使用我们的dll.
在.net环境下使用它的常见做法是什么.
加载时间真的如此不同吗?
我有一个模型,我想在其中保存一个新实例(行)。我有 ForeignKey 的主键,但我没有对象本身(假设它来自某个地方)。有没有办法在没有原始 SQL 的情况下保存它,而不必获取实例?
这是模型:
class UserLocale(models.Model):
user = models.ForeignKey(KingUser)
locale = models.ForeignKey(Locale)
Run Code Online (Sandbox Code Playgroud)
现在假设我有语言环境主键 ('en_US') 但我没有对象本身。我正在做的是保存它是这样的:
def save_locale(user_instance, locale_name):
locale = Locale.objects.get(pk=locale_name)
UserLocale.objects.create(user=user_instance, locale=locale)
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用原始 SQL 一步完成,但我想知道是否可以在 Django 查询模型中完成。
编辑:
是的,UserLocale 是一个 M2M 中间表。我知道创建一个多对多字段会更好,但它是遗留代码。
这是我的 SQL 尝试(没有测试,我正在手工编写,因为我远离代码):
def save_raw_sql(user_instance, locale_name):
query = """
INSERT INTO
project_userlocale (user_id, locale_id)
values (%s, %s)
"""
UserLocale.objects.raw(query, [user_instance.id, locale_name])
Run Code Online (Sandbox Code Playgroud)