我倾向于将Hibernate与Spring框架结合使用,它是声明式事务分界function(例如@Transactional )。 众所周知,hibernate试图尽可能保持非侵入性和透明性 ,但是在使用lazy-loaded关系时,这样做会更具挑战性 。 我看到许多不同透明度的devisescheme。 使关系不会延迟加载(例如, fetchType=FetchType.EAGER) 这违背了懒加载的整个想法。 使用Hibernate.initialize(proxyObj);初始化集合Hibernate.initialize(proxyObj); 这意味着相对较高的DAO耦合 虽然我们可以用initialize来定义一个接口,但其他的实现不能保证提供任何等价的东西。 将事务行为添加到持久Model对象本身(使用dynamic代理或@Transactional ) 我还没有尝试dynamic代理的方法,虽然我似乎从来没有得到@Transactional工作在持久对象本身。 可能是因为hibernate是在一个代理服务器上运行的。 交易实际发生时失去控制权 提供惰性/非惰性API,例如loadData()和loadDataWithDeps() 强制应用程序知道何时使用哪个例程,再次紧密耦合 方法溢出, loadDataWithA() ,…, loadDataWithX() 强制查找依赖关系,例如,仅通过提供byId()操作 需要大量非面向对象的例程,例如findZzzById(zid) ,然后getYyyIds(zid)而不是z.getY() 如果事务之间存在大量的处理开销,那么逐个获取集合中的每个对象会非常有用。 使应用程序 @Transactional,而不是只有DAO的一部分 嵌套事务的可能考虑 需要适应事务pipe理的例程(例如,非常小的) 虽然可能会导致大规模的交易,但对程序的影响很小 为DAO提供dynamic获取configuration文件 ,例如loadData(id, fetchProfile); 应用程序必须知道使用哪个configuration文件时 AoPtypes的交易,例如拦截操作,并在必要时执行交易 需要字节码操作或代理使用 交易执行失去控制权 黑魔法一如既往:) 我错过任何select吗? 试图最大限度地减less应用程序devise中lazy-loaded关系的影响时,您最喜欢哪种方法? (哦,对于WoT抱歉)
我有一个C#项目(称之为MainProj ),它引用了其他几个DLL项目。 通过将这些项目添加到MainProj的引用中,它将构build它们并将其生成的DLL复制到MainProj的工作目录。 我想要做的就是把这些引用的DLL放在MainProj工作目录的子目录,即MainProj / bin / DLL中,而不是工作目录本身。 我不是一个非常有经验的C#程序员,但来自C ++世界,我假设一种方法是删除项目引用,并显式加载所需的DLL的path和文件名(即在C + +, LoadLibrary )。 然而,如果有一种方法,我想要做的是设置某种“参考二进制path”,所以当我构build时,它们都会被自动复制到这个子目录(然后从那里引用我需要明确加载每个)。 这样的事情可能吗? 如果不是,C#中的首选方法是什么,我完成了什么(即东西与Assembly.Load / Assembly.LoadFile / Assembly.LoadFrom ?什么在AppDomain也许,或System.Environment ?)
我已经注意到这在许多“现代”的网站(如Facebook和谷歌图片search),只有当用户向下滚动页面足够使他们进入可见的视口区域内的折叠下的图像( 查看源代码,页面显示X数量的<img>标签,但不能直接从服务器获取 )。 这种技术叫做什么,它是如何工作的,以及在多less浏览器中工作。 有没有一个jQuery插件,可以用最less的代码来实现这个行为。 编辑 奖金:有人可以解释是否有一个“onScrolledIntoView”或类似的事件的HTML元素。 如果不是,这些插件如何工作?
这可能是一个真正的元素问题,但是在编写跨越三个级别(或更多)的查询时包括多个子实体的最好方法是什么? 即我有4个表: Company , Employee , Employee_Car和Employee_Country 公司与员工有1:m的关系。 员工与Employee_Car和Employee_Country都有1:m的关系。 如果我想写一个查询,从所有4个表中返回数据,我正在写: Company company = context.Companies .Include("Employee.Employee_Car") .Include("Employee.Employee_Country") .FirstOrDefault(c => c.Id == companyID); 必须有一个更优雅的方式! 这是漫长的,并产生可怕的SQL 我正在使用VS 2010的EF4