Spring认证中国教育管理中心-Spring Data Neo4j教程三

本文介绍了Spring Data Neo4j中处理唯一ID的三种方法:内部Neo4j id、外部提供的代理键和业务密钥。讨论了各自的优缺点,如内部ID易于使用但与数据库生命周期绑定,外部代理键提供了更大的控制但需要考虑唯一性,业务密钥自然但可能不稳定。此外,还详细阐述了Spring Data对象映射的基础,包括对象创建和属性填充的机制。
摘要由CSDN通过智能技术生成

原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程三(Spring中国教育管理中心)

6.2.处理和提供唯一 ID

6.2.1.使用内部 Neo4j id

为您的域类提供唯一标识符的最简单方法是在 类型字段上组合@Id和(最好是对象,而不是标量,因为字面量是一个更好的指示实例是否是新的):@
GeneratedValueLonglongnull

示例 5. 具有内部 Neo4j id 的可变 MovieEntity

@Node("Movie")
public class MovieEntity {

        @Id @GeneratedValue
        private Long id;

        private String name;

        public MovieEntity(String name) {
                this.name = name;
        }
}

你不需要为字段提供setter,SDN会使用反射来分配字段,但是如果有的话就使用setter。如果你想用内部生成的 id 创建一个不可变的实体,你必须提供一个wither

示例 6. 具有内部 Neo4j id 的不可变 MovieEntity

@Node("Movie")
public class MovieEntity {

        @Id @GeneratedValue
        private final Long id; 

        private String name;

        public MovieEntity(String name) { 
                this(null, name);
        }

        private MovieEntity(Long id, String name) { 
                this.id = id;
                this.name = name;
        }

        public MovieEntity withId(Long id) { 
                if (this.id.equals(id)) {
                        return this;
                } else {
                        return new MovieEntity(id, this.title);
                }
        }
}

指示生成值的不可变最终 id 字段

公共构造函数,由应用程序和 Spring Data 使用

内部使用的构造函数

这就是所谓的-属性凋零id。它创建一个新实体并相应地设置字段,而不修改原始实体,从而使其不可变。

你要么必须为 id 属性或类似的东西提供一个 setter 如果你想拥有

  • 优点:很明显 id 属性是代理业务键,使用它不需要进一步的努力或配置。
  • 缺点:它与 Neo4js 内部数据库 id 相关联,这对于我们的应用程序实体来说并不是唯一的,仅在数据库生命周期内。
  • 缺点:创建不可变实体需要花费更多精力

6.2.2.使用外部提供的代理键

@GeneratedValue注释可以将实现的类作为
org.springframework.data.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值