标签: persistence

持有Java对象的轻量级选项有哪些?

持久化Java对象有哪些轻量级选项?

我正在寻找最简单的解决方案.我不希望任何花哨的特征只是简单的东西,与合理简单的对象(一些集合,关系和简单的继承)一起工作,并且不会给现有的代码库带来太多明显的复杂性(如果有的话).

我所知道的选项包括Hibernate和EMF这样的框架,但它们听起来(并且经验丰富)过于复杂和耗时.我喜欢开箱即用的东西,最好是文件导向而不是面向dababase,我可以把它放在我普通的旧Java对象之上.

这是一个新手问题,提前感谢任何类似教程的上下文澄清指南.

java persistence

15
推荐指数
3
解决办法
1万
查看次数

如何在JPA中拥有2个相同类型的集合?

我在JPA中有两个实体:Entry和Comment.Entry包含两个Comment对象集合.

@Entity
public class Entry {
    ...

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @IndexColumn(base = 1, name = "dnr")
    private List<Comment> descriptionComments = new ArrayList<Comment>();

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @IndexColumn(base = 1, name = "pmnr")
    private List<Comment> postMortemComments = new ArrayList<Comment>();

    ...
}
Run Code Online (Sandbox Code Playgroud)

为了存储这样的对象,JPA + Hibernate创建了"Entry"表,"Comment"表和SINGLE"Entry_Comment":

create table Entry_Comment (Entry_id integer not null, postMortemComments_id integer not null, pmnr integer not null, descriptionComments_id integer not null, dnr integer not null, primary key (Entry_id, dnr), unique (descriptionComments_id), unique (postMortemComments_id))

对象的存储失败, …

java collections persistence hibernate jpa

15
推荐指数
1
解决办法
6813
查看次数

什么时候应该使用JCR?何时应该使用JPA/RDBMS?

Java JCR API定义了一种持久性机制,可用于替换RDBMS的许多传统角色.例如,JackRabbit - JCR参考实现 - 支持事务,SQL查询,对象内容映射等.

您可以选择一个或另一个,将二进制数据存储在RDBMS中的BLOB /文件系统指针或JCR节点属性中的文本数据中.有没有人有经验取代抛弃他们的数据库而转向JCR?

您可以使用两者,可能在CR中存储二进制数据,在RDBMS中存储文本数据,但是您必须表达系统之间的关系,保持它们同步等等.您也开始面对一个难题,"它感觉正确用文档的二进制数据存储这个文档标题,所以我将它作为一个节点属性...但是我在我的数据库中有这个文档记录所以也许我应该把它保存在那里......"

你是如何决定的?

rdbms persistence jcr

15
推荐指数
1
解决办法
3509
查看次数

有没有办法从EntityManager获取所有托管实体

我正在设置一个基本的测试数据util,并希望跟踪EntityManager处理的所有数据.而不是只为每个实体提供一堆列表,有没有办法一举抓住EntityManager管理的所有内容?

所以不是这样的:

EntityManager em;
List<Entity1> a;
List<Entity2> b;
...
List<Entityn> n;

cleanup() {
    for(Entity1 e : a) em.remove(e);
    for(Entity2 f : b) em.remove(f);
    ...
    for(Entityn z : n) em.remove(z);
}
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西;

EntityManager em;

cleanup() {
    List<Object> allEntities = em.getAllManagedEntities(); //<-this doesnt exist
    for(Object o : allEntities) em.remove(o);
}
Run Code Online (Sandbox Code Playgroud)

不确定这是否可行,但我只想知道经理知道它在管理什么?或者,如果您有任何想法可以轻松管理一堆实体.

persistence entity-relationship jpa

15
推荐指数
1
解决办法
2万
查看次数

Java的轻量级B树库?

任何人都可以为Java推荐一个轻量级,快速且有希望稳定的B树(或类似)库吗?

基本上我正在寻找磁盘上的地图; BerkeleyDB JE除了我不需要事务之外,对于只读并发很好,需要大约1/10大小(BSD或Apache许可证也很好).

需要纯Java,所以没有东京/京都机柜.

实现相关Collections接口将是一个加号(或者,原始类型的模板化接口也会很好).

JDBM看起来相当不错,但它似乎在2005年被放弃了(1.0,不低于).

还有DiskBackedMap,但他们一年前发布了一个alpha版本,此后一无所获.

还有别的吗?或者上述任何经历?

我不想要的东西:

  • 进程间关系数据库(所以没有H2,Derby,SQLite等)
  • 分布式键值存储(没有Redis,Memcachedb,Cassandra,Voldemort,Dumbledore等)

java persistence b-tree map dbm

15
推荐指数
1
解决办法
5299
查看次数

是否应该在equals和hashCode中考虑JPA实体的id字段?

我在使用JPA2和EclipseLink编写数据库应用程序的测试时遇到了问题:

我将一些实体添加到数据库中,稍后检索它并希望将其与具有我期望确认添加按预期工作的值的实例进行比较.

首先我写了类似的东西

assertEquals(expResult, dbResult);
Run Code Online (Sandbox Code Playgroud)

失败了,因为我真的不知道id数据库生成的字段的值,因此dbResult不同于expResult我创建new和手动填充的字段.

我看到两个选择:

  • 要么我id从中移除字段equals,hashCode以便比较仅基于"实际值".不过,我不知道这是否会导致数据库或其他地方出现问题.

  • 或者我编写测试以明确检查除id手动之外的每个字段.

我该怎么办?

java persistence jpa equals eclipselink

15
推荐指数
3
解决办法
3283
查看次数

如何使用JPA解决javax.persistence.EntityNotFoundException(而不是使用@NotFound)

我们正在使用JPA从数据库加载一些东西.一些实体可能在它们之间具有可选关系,例如

@Entity
public class First {
    ....
    @OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
    @JoinColumns(value = {
        JoinColumn(name = "A_ID", referencedColumnName = "A_ID", insertable = false, updatable = false), 
        JoinColumn(name = "B_ID", referencedColumnName = "B_ID", insertable = false, updatable = false)})
    private Second second;
Run Code Online (Sandbox Code Playgroud)

当数据库中存在此关联时,一切正常.当它不是时,我得到一个javax.persistence.EntityNotFoundException
我想要的而不是异常,如果该关联不存在,则将该字段设为NULL.

我尝试了好几种不同的东西,例如,使用可选=真正的关系注释(顺便说一句这是默认选项),把它作为可空,等似乎没有这样的伎俩,好像被忽略了所有这些选项.

我发现很多链接提到了这个相同的问题(以及stackoverflow中的一些问题),但是在所有这些问题中,建议是使用@NotFoundHibernate中的注释.但是我们不想对Hibernate有任何依赖(我们希望保持所有纯粹的JPA).

你们中的任何人都知道解决这个问题吗?

非常感谢你的帮助!

java persistence hibernate jpa

15
推荐指数
2
解决办法
3万
查看次数

哪个是Scala和PostgreSQL的Play框架可用的最佳数据访问选项?

我们有早期的经验和许多可重用的代码/组件,主要使用Spring MVC,Hibernate,PostgreSQL数据库完成.

但最近我们计划开始一个新项目.我们决定在Scala中使用Play框架.我们是Scala的Play框架的新手.因此,我们无法决定使用什么ORM(对象关系映射)框架.由于许多可重用的代码,我们希望选择Hibernate.

我们发现关于Hibernate的可怕单词是"在Scala中使用Hibernate的JPA,它可能不是最好的方式,它应该被视为遗留和弃用".我们真的很困惑用什么?

在寻找可能性时,我们发现了Anorm和Hibernate.可能存在一些其他框架,我们还不知道.

那么请建议我们使用Scala和PostgreSQL的Play框架使用什么?

提前致谢!

postgresql persistence hibernate scala playframework

15
推荐指数
1
解决办法
7293
查看次数

具有React Native Router Flux的合成场景堆栈(历史)

有没有办法如何使用React Native Router Flux综合定义场景堆栈(历史)?假设我有一个应用程序,用户可以自然地从中导航A –> B –> C.我想在场景C上启动应用程序,它具有与自然行为(A -> B -> C)相同的历史记录,因此用户可以B从最初打开的场景导航回来C.

编辑:我想它应该可以通过使用Redux Persist以某种方式实现,但我发现了这个相关的问题.

javascript persistence react-native redux react-native-router-flux

15
推荐指数
1
解决办法
1015
查看次数

如何在Docker容器中运行的Prometheus中保存数据?

我正在开发一些需要Prometheus在重启之间保持数据的东西.遵循了指示

$ docker volume create a-new-volume
$ docker run \
    --publish 9090:9090 \
    --volume a-new-volume:/prometheus-data \
    --volume "$(pwd)"/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
Run Code Online (Sandbox Code Playgroud)

我prometheus.yml在主机上的正确目录中有效,并且Prometheus正在容器内读取它.我现在只是为了测试目的而抓取几个HTTP端点.

但是,当我重新启动容器时,它是空的,没有来自上一次运行的数据.我的docker run ...命令中缺少什么来将数据保存到a-new-volume卷中?

persistence docker prometheus

15
推荐指数
2
解决办法
6743
查看次数