Tag: 持久性

持久图数据(Java)

我有一个利用图形(树状)自定义结构的应用程序。 结构不是真正的树木,但几乎所有的东西都是连在一起的。 数据量也很大(可以存在数百万个节点)。 树节点的类型可以不同,以使其更有趣(inheritance)。 我不想改变数据结构以适应持久性存储。 我希望在没有太多额外工作的情况下保留这些数据。 我已经调整了一些选项来解决这个问题,但找不到任何符合我需要的东西。 可能的选择:序列化,带有ORM(Hibernate?)的数据库,JCR(JackRabbit?),还有其他什么? 性能很重要,因为它是基于GUI的“实时”应用程序(无批处理),并且可能有数百万个图形节点应该在内存和持久数据存储之间进行读写。 有没有人有关于存储这类数据的经验或想法?

javax.persistence.Entitymanager:remove()方法

EntityManager的 remove (Object entity)方法是否仅适用于从find ()方法获取的那些对象? 我有以下代码片段: public void deletePerson() { EntityManager em = getEntityManager(); Person p = new Person(“x”, “y”, 200); em.remove(p); } 但它并没有从数据库中删除特定条目。 当我尝试以下内容时: public void deletePerson() { EntityManager em = getEntityManager(); Person p = em.find(Person.class, 200); em.remove(p); } 它工作正常。

Quick’n’dirty持久性

我经常发现自己需要快速(在代码方面),轻量级(在运行时,依赖性方面)持久性解决方案,只需要一堆对象,主要是在应用程序重启之间。 通常我会使用一些Java序列化黑客,但我想知道是否有更好的东西。 你用过类似的东西吗? 为了说清楚,我的书中基于JPA的解决方案并不轻量级 ,而基于JDBC的解决方案并不快 。 更新 :我赞成无配置框架而不是那些需要配置的框架。 例如,Java序列化解决方案需要一个implements Serializable的implements Serializable 。 带注释或带有映射文件的JPA解决方案太重了。 更新2 :为了说清楚,我不认为序列化是一个黑客。 它实际上是一个非常强大的机制,只是我在做持久性时以一种hackish方式使用它。

在SugarORM中持久存在物体

我有一本书课: public class Book extends SugarRecord { private String mBookName; private String mAuthorName; private List mPageList; public Book() { } public Book(String bookname, String authorName) { mBookName = bookname; mAuthorName = authorName; mPageList = new ArrayList(); } public String getAuthorName() { return mAuthorName; } public void setAuthorName(String authorName) { mAuthorName = authorName; } public String […]

Google App Engine ClassNotPersistenceCapableException

我有以下课程: import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; import com.google.appengine.api.datastore.*; @PersistenceCapable(identityType=IdentityType.APPLICATION) public class PayPal_Message { @PrimaryKey @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private Text content; @Persistent private String time; public PayPal_Message(Text content,String time) { this.content=content; this.time=time; } public Long getId() { return id; } public Text getContent() { return content; } public String […]

JPA和谷歌应用引擎中的多对多关系

我有实体A和B,A可以有B的集合.B的相同实例可以属于几个A.所以这里有经典的多对多关系。 在GAE中,没有多对多关系的直接支持,相反,它们提供了使用密钥集来进行相关关系的能力。 所以在AI中将维护B中的记录键集。 现在的问题是 – 如何查询属于类型A的给定对象并匹配某些条件的B类对象? 在纯SQL中,我会这样做: select B.* from B inner join A on B.A_ID=A.ID where B.property0=criteria1 and B.property1=criteria2 … and … 但因为我不能做JOIN然后我需要做类似的事情 select B.* from B where B.A_ID in ( … ) and B.property0=criteria1 and B.property1=criteria2 … and … 因此,由于ID的数量,查询本身可能会很长。 有没有更好的方法?

持久性@Column nullable = false可以插入null

我想做这个列不能为null但是当我在数据库中插入一个寄存器值null时,这允许我插入。 我阅读文档 ,我不知道为什么不起作用。 @Column(name=”QWECOD”, nullable = false) private String qwe; 谢谢 更新:我正在使用Toplink和java org.eclipse.persistence.eclipselink:2.4.2 。

实体管理器不在JavaFX中工作

我正在使用数据库中的持久性单元和实体类,所有这些都在JavaFx fxml应用程序中,我成功地将所有表作为模型中的实体导入,问题是当我尝试插入实体时出现exception和错误,这是我的整个代码 public class SampleController implements Initializable { @PersistenceContext(unitName=”RawdaPU”) private EntityManager em; @FXML private Label label; @FXML private void handleButtonAction(ActionEvent event) { Moyendidactique moyenDidactique = new Moyendidactique(“1”, “moyen1”, “Type1”); em.persist(moyenDidactique); em.close(); } @Override public void initialize(URL url, ResourceBundle rb) { // TODO } } 这是我按下按钮时获得的完整错误(当触发handleButtonAction时) java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1440) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) […]

在JPA / EclipseLink中保留包含订单和重复项的列表

我基本上有两个实体Entity1和Entity2 。 Entity1包含以下代码: @OneToMany(cascade=CascadeType.PERSIST) @OrderColumn List e = new LinkedList(); 和Entity2包含一些东西,但没有任何相关性。 我想在列表e添加一些实例,最重要的是我想在列表中添加一些重复项(相同的引用)两次或更多次。 我仍然希望JPA坚持两者,我希望JPA坚持列表的顺序。 到目前为止,如果我只添加唯一的项目,这是有效的。 如果我添加一个副本,JPA实际上想要保留正确的数据(ID od Entity1,Entity2的ID和顺序),但由于关系表的主键只有两个ID,JPA会抛出重复的主键错误。 我怎么解决这个问题?

支持最终字段的Java持久性提供程序

我是Java的新手,但我一直在养成使用final的习惯,尽可能宣布不变性,我认为这是一件好事。 (考虑f#) 我已经读过JPA不支持final字段。 Hibernate,TopLink? 我不确定这些,但我现在更喜欢JPA。 这在理论上是否可能 – 让我们通过反思来说 – 在创建后修改最终字段? 我的猜测是……不… 持久性解决方案当然可以支持带参数的构造函数。 至少我认为没有理由会让这一切变得不可能。 我猜,映射会有点棘手。 这是一种替代解决方案。 建议? 编辑:我不熟悉不可变的确切定义所以我直观地在这篇文章中使用它。 在此声明不变性意味着声明无法更改字段。 很抱歉对于这个误会。