Tag: 持久性

JPA属性java.net.URL

HI, 我有一个对象,它有一段与之相关的URL信息。 目前我将此URL保存在一个简单的String属性中,但java.net.URL会为我提供额外的好处,例如检测格式错误的URL等。 另一方面,如果JPA只是为URL-Object创建了一个LOB,我认为它非常难看。 有谁知道兼容的JPA提供程序如何将java.net.URL类型的属性保存到数据库?

有什么样的轻量级选项可以持久化Java对象

持久化Java对象有哪些轻量级选项? 我正在寻找最简单的解决方案。 我不希望任何花哨的特征只是简单的东西,与合理简单的对象(一些集合,关系和简单的inheritance)一起工作,并且不会给现有的代码库带来太多明显的复杂性(如果有的话)。 我所知道的选项包括Hibernate和EMF这样的框架,但它们听起来(并且经验丰富)过于复杂和耗时。 我喜欢开箱即用的东西,最好是面向dababase的文件导向,我可以把它放在我简单的旧Java对象之上。 这是一个新手问题,提前感谢任何类似教程的上下文澄清指南。

与连接表的一对多关系

我有一个使用连接表建模的一对多关系: create table t1 (id int primary key, name varchar(10) /*…*/); create table t2 (id int primary key, name varchar(10) /*…*/); create table t1_t2 (t1_id int, t2_id int, primary key (t1, t2)); 这些表应该模拟一个t1到多个t2的关系。 使用JPA对这些表建模的正确方法是什么?

如何知道已分离的JPA实体是否已被保留?

我的应用程序的Web UI层中有一个JPA实体实例。 我想随时知道这个实体是否已经存在于数据库中,或者它是否仅存在于用户会话中。 它将在业务层,我会使用entitymanager.contains(Entity)方法,但在我的UI层中,我认为我需要一个额外的属性来指示实体是否已被保存。 怎么实现呢? 我正在考虑暂时关注选项: 具有由数据库设置的默认值的JPA属性,但在每次更新后会强制执行新读取吗? 在我的代码中手动设置或由JPA自动设置的非JPA属性? 有什么建议/其他建议吗? 我正在使用JPA 1与Hibernate 3.2实现,并希望坚持标准。

在多对多单向映射中保留枚举集

我正在使用带有注释的Hibernate 3.5.2-FINAL来指定我的持久性映射。 我正在努力建模应用程序和一组平台之间的关系。 每个应用程序都可用于一组平台。 从我所做的所有阅读和搜索中,我认为我需要将平台枚举类保持为实体,并使用连接表来表示多对多关系。 我希望关系在对象级别是单向的,也就是说,我希望能够获得给定应用程序的平台列表,但我不需要找出给定平台的应用程序列表。 这是我的简化模型类: @Entity @Table(name = “TBL_PLATFORM”) public enum Platform { Windows, Mac, Linux, Other; @Id @GeneratedValue @Column(name = “ID”) private Long id = null; @Column(name = “NAME”) private String name; private DevicePlatform() { this.name = toString(); } // Setters and getters for id and name… } @Entity @Table(name = “TBL_APP”) […]

使用Terracotta作为持久性解决方案

使用Terracotta作为持久性解决方案(替换数据库)是不是一个好主意? 我特别想知道数据完整性问题和对事务系统的支持。

保留适合枚举的数据

大多数项目都有某种类型的数据,这些数据在发行版之间基本上是静态的,非常适合用作枚举,如状态,事务类型,错误代码等。例如,我只使用一个公共状态枚举: public enum Status { ACTIVE(10, “Active”); EXPIRED(11, “Expired”); /* other statuses… */ /* constructors, getters, etc. */ } 我想知道其他人在这些数据的持久性方面做了些什么。 我看到一些选项,每个选项都有一些明显的优点和缺点: 在状态表中保留可能的状态,并保留所有可能的状态域对象,以便在整个应用程序中使用 只使用枚举,不要保留可用状态列表,在我和我的DBA之间创建数据一致性圣战 保持状态并在代码中维护枚举,但不要将它们绑定在一起,从而创建重复的数据 我的偏好是第二种选择,虽然我的DBA声称我们的最终用户可能想要访问原始数据来生成报告,而不是持久化状态会导致数据模型不完整(反驳:这可以通过文档解决) 。 大多数人在这里使用会议吗? 人们对每个人的经历是什么,还有其他选择吗? 编辑: 在考虑了一段时间之后,我真正的持久性斗争来自于处理与数据库中的状态相关联的id值。 安装应用程序时,这些值将作为默认数据插入。 此时,它们具有可用作其他表中的外键的ID。 我觉得我的代码需要知道这些ID,以便我可以轻松检索状态对象并将它们分配给其他对象。 我该怎么办? 我可以添加另一个字段,比如“代码”,查看内容,或者只是按名称查找状态,这是icky。

是否有任何Java VM可以将其状态保存到文件然后重新加载该状态?

是否有任何Java VM可以将其状态保存到文件然后重新加载该状态? 如果是这样,哪些?

如何制作复合主键(java持久性注释)

如何使表user_roles将两列(userID,roleID)定义为复合主键。 应该很容易,只是记不住/找不到。 在user实体中: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = “user_roles”) public List getRoles() { return roles; } @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getUserID() { return userID; } 在roles实体中: @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = “user_roles”) public List getUsers() { return users; } @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getRoleID() { return roleID; } 谢谢。 ** 更多信息 […]