我喜欢EclipseLink的一件事有一个叫做批量查询提示的好东西,我还没有找到Hibernate的等价物.
基本上做一大堆连接变得很乱,你最终查询的方式比你想要的更多数据(请记住,如果你加入6个地址的人,那么人的信息将被返回6次;现在继续将其乘以额外的连接) .
想象一个Person实体,其中包含0:M的Address,Email,Phone和OrderHistory集合.使用批处理方法加入所有不好的方法:
List persons = entityManager.createQuery("select p from Person p"
.setHint(QueryHints.BATCH, "p.address")
.setHint(QueryHints.BATCH, "p.email")
.setHint(QueryHints.BATCH, "p.phone")
.setHint(QueryHints.BATCH, "p.orderHistory")
.getResultList();
Run Code Online (Sandbox Code Playgroud)
这将在Person表上进行查询,就是这样.首次访问地址记录时,它将对整个地址表执行单个查询.如果在Person表上指定了where子句,则同样的条件也将用于Address加载.
因此,不要进行1次查询,而是执行5次查询.
如果您使用连接执行此操作,则可以在一个查询中获取所有内容,但由于连接,您可能正在加载更多数据.
无论如何,我已经开始在Hibernate文档中寻找与此相当的东西,但是没有看到它.有吗?
最近,我发现了一些我以前从未使用过的快捷键.喜欢这样的键F7,F3,Ctrl+ g帮了我很多编辑和调试运行时.Visual Studio中最常用的快捷键是什么?
在试图获得所有绿色时,我得到了Resharper的以下建议.
原始代码:
static public string ToNonNullString(this XmlAttribute attr)
{
if (attr != null)
return attr.Value;
else
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
建议:删除多余的"其他",导致以下内容:
static public string ToNonNullString(this XmlAttribute attr)
{
if (attr != null)
return attr.Value;
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,建议的版本似乎不如原始版本可读.Resharper建议是否反映了良好可维护代码的定义?
什么是避免在没有所有者知道的情况下复制和使用应用程序的最佳方法?
有没有办法追踪使用情况?这意味着应用程序定期回传,提供足够的信息,以便我们知道它在哪里,以及它是否合法.当然,接下来的事情就是关闭它,如果它不合法的话.
我有兴趣为Sony PlayStation 2游戏机创建软件/游戏,因为它们包含强大的图形处理器(GPU),浮点计算和通用CPU.
我已经购买了PS2游戏机及其PS2 SDK v3.07,据称它带有PS2开发套件(价格为8,000美元).我没有PS2 Dev Kit控制台.
我可以使用我的普通PS2控制台来开发原生程序和游戏吗?我是否需要PS2开发套件附带的特殊PS2,或者我可以重新编程我的PS2吗?我不介意缺乏调试功能,只要我能编写代码并让它在PS2 上运行即可!
PS2开发套件附带的PS2是否是一款带有额外/ 不同硬件的特殊产品?或者只是一个不同的操作系统,以便有调试设施等?
这是我在PS2 SDK中得到的:
谢谢你的帮助!
我正在使用Berkeley套接字(两者:Internet域和Unix域),我想知道服务器是否可以使用相同的套接字来读取请求并将响应写入客户端.或者客户端是否应该创建另一个套接字以等待重播,并且服务器在处理收到的消息后连接到它.
顺便说一句,我在谈论面向连接的套接字(流套接字,TCP,...).
这是简化的服务器代码(为了简单起见,我省略了对系统调用的错误检查):
int main() {
int server_socket, connected_socket;
struct sockaddr_in server_addr;
char buf[1024];
char aux[256];
int bytes_read;
server_socket = socket(AF_INET, SOCK_STREAM, 0);
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(1234);
bind(server_socket, &server_addr, sizeof(server_addr))
listen(server_socket, 5)
connected_sodket = accept(server_socket, 0, 0);
do {
bzero(buf, sizeof(buf));
bytes_read = read(connected_socket, buf, sizeof(buf));
} while (bytes_read > 0);
/* Here I want to use connected_socket to write the reply, can I? */
close(connected_socket);
close(server_socket);
return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
这是简化的客户端代码(为了简单起见,我省略了对系统调用的错误检查):
int main() {
int …Run Code Online (Sandbox Code Playgroud) 我正在编写我的Delphi TGraphicControl绘图程序.
我创建了一个画布,然后将它拉伸到图形区域.它运作良好.
然后我用另一个Stretchdraw重复这个到图形区域,但它在第一个Stretchdraw的区域绘制,而不是在我指导它的图形区域.
有没有办法可以在TGraphicControl的画布中将两个stretchdraws放在一起?
我有一系列需要访问彼此数据的Oracle数据库.最有效的方法是使用数据库链接 - 设置一些数据库链接我可以从A到B获取数据,而且操作起来很少.对我来说问题是你最终得到了一个紧密耦合的设计,如果一个数据库出现问题,它可以将耦合数据库带入它(或者可能是这些数据库上应用程序的一部分).
您尝试了哪些替代方法在Oracle数据库之间共享数据?
几个回复后更新......
我没有想太多的复制,更多的是访问"主数据".例如,如果我有一个具有货币转换率的中央数据库,我想将费率提取到一个单独的数据库(应用程序).对于这样一个小型数据集,igor-db建议使用DB链接的物化视图可以很好地工作.但是,当您从非常大的数据集中动态采样时,本地缓存选项开始变得更加棘手.在这种情况下你会选择什么选择.我想知道一个XML服务,但是tuinstoel(在对le dorfier的回复的评论中)正确地质疑了所涉及的开销.
回复摘要......
总的来说,我认为igor-db是最接近的,这就是为什么我接受了这个答案,但我想我会添加一点来提出其他一些答案.
就我的目的而言,我只关注数据复制,看起来Oracle BASIC复制(而不是ADVANCED)复制对我而言.使用主站点上的物化视图日志和快照站点上的物化视图看起来是一种很好的前进方式.
如果这不是一个选项,也许数据卷使全表复制成为问题,那么消息传递解决方案似乎是最合适的Oracle解决方案.Oracle Advanced Queuing似乎是设置消息传递解决方案的最快捷,最简单的方法.
最不可取的方法似乎是自己动手的XML Web服务,但仅限于高级排队相对容易的选项.
我想创建一个简单的短期预订系统,我想生成确认号码
我只希望有〜500所保留,所以我不想像 collissions高的情形产生.
我有一个想法是根据日期时间戳和用户名生成一个sha1哈希,然后将其截断为前10个字符.这样的东西是否足够可靠,足以处理~500个预订?