在我正在使用.ear打包的Java EE 6应用程序中,我想创建一个可以从不同.jar文件中的组件访问的持久性单元.
但是,我不确定如何定义此持久性单元.使用@PersistenceContext注释,如果名称与本地persistence.xml文件中定义的持久性单元匹配,则查找仅成功.
是否可以引用外部持久性单元?
数据访问对象(DAO)是一种常见的设计模式,由Sun推荐.但最早的Java DAO示例直接与关系数据库进行交互 - 它们本质上是做对象关系映射(ORM).如今,我看到DAO在成熟的ORM框架之上,如JDO和Hibernate,我想知道这是不是一个好主意.
我正在使用JDO作为持久层开发Web服务,并且正在考虑是否引入DAO.我在处理包含其他对象映射的特定类时遇到了问题:
public class Book {
// Book description in various languages, indexed by ISO language codes
private Map<String,BookDescription> descriptions;
}
Run Code Online (Sandbox Code Playgroud)
JDO足够聪明,可以将其映射到"BOOKS"和"BOOKDESCRIPTIONS"表之间的外键约束.它透明地加载BookDescription对象(我相信使用延迟加载),并在Book对象持久化时保留它们.
如果我要引入一个"数据访问层"并编写一个像BookDao这样的类,并将所有JDO代码封装在其中,那么这个JDO对子对象的透明加载不会绕过数据访问层吗?为了保持一致性,不应该通过一些BookDescriptionDao对象(或BookDao.loadDescription方法)加载和保存所有BookDescription对象吗?然而,以这种方式进行重构将使得模型的操作变得不必要地复杂化.
所以我的问题是,在业务层中直接调用JDO(或Hibernate,或者你想要的任何ORM)有什么问题?它的语法已经非常简洁,并且与数据存储区无关.如果有的话,将它封装在数据访问对象中有什么好处?
嘿大家,我是新手,坚持/休眠,我需要你的帮助.
这是情况.我有一张包含一些东西的表.我们称他们为人.我想从数据库中获取该表中的所有条目.
我有一个Person类,它是一个简单的POJO,表中的每一列都有一个属性(name,age,..)
这就是我所拥有的:
Query lQuery = myEntityManager.createQuery("from Person")
List<Person> personList = lQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个警告,说这是一个未经检查的转换,从List以List<Person>
我认为只需将代码更改为
Query lQuery = myEntityManager.createQuery("from Person")
List<Person> personList = (List<Person>)lQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)
会工作..但它没有.
有没有办法做到这一点 ?持久性是否允许我设置查询的返回类型?(通过泛型可能吗?)
Hibernate是一个持久性框架,用于将数据从Java环境持久化到数据库.
我很困惑,如果我们坚持并反对数据库,那么为什么Hibernate架构会在Application和Hibernate中间指示持久对象?

我目前正在开发一个项目,该项目需要来自javax.persistence包的EntityManager EntityManagerFacotry和Persistence.它似乎是针对数据库服务的,但是当前的代码没有很好地记录.通过搜索谷歌似乎应该有一个与此一起出现的xml文件,但也没有其中一个.我想我的问题只是如何让这些未解决的进口消失?我是否必须在构建路径中添加另一个jar?似乎我不应该这样做,因为它自1.5以来一直存在.
任何帮助是极大的赞赏.
我的应用使用Firebase同步和恢复数据.我使用该setValue:withCompletionBlock:方法插入,更新和删除Firebase对象.只要存在CoreData保存,就会调用此方法,从而将所有本地更改同步到Firebase
- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;
Run Code Online (Sandbox Code Playgroud)
现在同步将所有本地数据上传到firebase,而restore则使用firebase数据替换本地数据.
- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;
Run Code Online (Sandbox Code Playgroud)
我观察FEventTypeValue并使用它FDataSnapshot来从Firebase获取数据并恢复本地数据.
所以一切都适合我,直到我开始persistence使用Firebase.
[Firebase setOption:@"persistence" to:@YES];
Run Code Online (Sandbox Code Playgroud)
现在persistence,当我打开时,当我更新时,比如将对象插入Firebase,然后恢复,恢复插入前的数据.即没有恢复新插入的对象.但是,如果我再次恢复,则会恢复插入的对象.删除对象时会发生同样的事情.当我第一次恢复时,删除的对象重新出现,当我再次恢复时,删除的对象消失.我可以看到通过Firebase数据视图正确插入和/或删除了Firebase对象.
我不确定我在这里做错了什么.我恢复时只有问题.我认为Firebase缓存导致此恢复问题.我正在考虑在恢复之前清除Firebase缓存.我的问题是
persistence objective-c ios firebase firebase-realtime-database
如何判断我的程序的一个实例是否正在运行?我以为我可以用数据文件做这个但它只是凌乱:(
我想这样做,因为我只希望一个实例在一个点上打开.
我有两个实体:用户和人.
在实体用户中,我需要关联人员的id:user_id.
当我创建一个新用户时,我必须首先创建一个人,然后创建用户.在用户中,我必须输入相应人员的id,为此我需要获取持久对象人员的id,这是一个自动增量.
是否有可能获得对象的id后:
$em->persist($person);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
另一种方法是在表Person中搜索最大的id并取这个,但我认为应该有一个更好更容易的方法来获取持久化对象的id.
以php为例,当我执行时
$articleID = $_DB->queryRaw((....);
Run Code Online (Sandbox Code Playgroud)
我得到了那样的id.
如果我将空列表传递给JPA查询,我会收到错误.例如:
List<Municipality> municipalities = myDao.findAll(); // returns empty list
em.createQuery("SELECT p FROM Profile p JOIN p.municipality m WHERE m IN (:municipalities)")
.setParameter("municipalities", municipalities)
.getResultList();
Run Code Online (Sandbox Code Playgroud)
因为列表是空的,所以Hibernate在SQL中将其生成为"IN()",这使我在Hypersonic数据库中出错.
在Hibernate问题跟踪中有一个这样的票,但那里没有很多评论/活动.我不知道其他ORM产品或JPA规范中的支持.
我不喜欢每次都必须手动检查空对象和空列表的想法.是否有一些众所周知的方法/扩展?你如何处理这些情况?
我的应用程序用户询问包含jqGrid的页面是否可以记住网格的过滤器,排序顺序和当前页面(因为当他们单击网格项来执行任务然后返回到它时他们会喜欢它是"因为他们离开了它")
Cookie似乎是前进的方向,但如何让页面加载这些并在它发出第一个数据请求之前将它们设置在网格中在这个阶段有点超出我的意义.
有没有人对jqGrid有这种经历?谢谢!