当前位置: 首页 > wzjs >正文

网站改版影响个人有限公司注册流程

网站改版影响,个人有限公司注册流程,网站建设管理的规章制度,特价服务器系列文章目录 Java实战知识 文章目录 系列文章目录👉前言👉一、ManyToOne (多对一)👉1-1、示例👉1-2、注意事项 👉二、OneToMany (一对多)👉2-1、示例👉2-2、注意事项 👉壁纸分享&a…

系列文章目录

Java实战知识


文章目录

  • 系列文章目录
  • 👉前言
  • 👉一、@ManyToOne (多对一)
    • 👉1-1、示例
    • 👉1-2、注意事项
  • 👉二、@OneToMany (一对多)
    • 👉2-1、示例
    • 👉2-2、注意事项
  • 👉壁纸分享
  • 👉总结


👉前言

理解 Java 中的关系映射(JPA/Hibernate)是构建数据库驱动应用的核心。下面详细解析 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 的原理、使用及关键注意事项:

核心原理: 这些注解将对象间的关联关系(基于面向对象)映射到数据库表间的关联关系(基于关系模型)。ORM 框架(如 Hibernate)负责在运行时根据这些注解生成 SQL 语句(JOIN, 子查询等)来加载或保存相关联的数据。

博客将会介绍如何实现Java关系映射。希望这篇博客对Unity的开发者有所帮助。
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
欢迎点赞评论哦.下面就让我们进入正文吧 !


提示:以下是本篇文章正文内容,下面案例可供参考

👉一、@ManyToOne (多对一)

原理:

  1. 概念: 表示“多”方实体引用“一”方实体。这是最常见的关联,也是构建其他关联的基础。

  2. 数据库体现: “多”方对应的表拥有一个外键列,指向“一”方表的主键。

  3. 使用: 在“多”方实体类中,使用 @ManyToOne 标注关联字段。

  4. 关键属性:
    fetch:加载策略 (FetchType.LAZY - 懒加载 [推荐默认], FetchType.EAGER - 急加载)。
    cascade:级联操作类型 (CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE 等),决定在操作当前实体时是否级联操作关联实体。
    optional:关联是否可为空 (true - 可为空 [默认], false - 不可为空)。

👉1-1、示例

多个 Order (订单) 属于一个 Customer (客户)。
代码如下:

@Entity
public class Order {@Idprivate Long id;@ManyToOne(fetch = FetchType.LAZY) // 推荐使用懒加载@JoinColumn(name = "customer_id") // 指定外键列名,可选private Customer customer; // 引用“一”方// ... other fields, getters, setters
}@Entity
public class Customer {@Idprivate Long id;// ... other fields, getters, setters// 通常不需要在这里定义反向的 @OneToMany,除非需要双向关联
}

👉1-2、注意事项

  1. 外键管理: @ManyToOne 端是关系的拥有方。数据库外键列存在于 Order 表中。

  2. 懒加载: 强烈建议使用 FetchType.LAZY。加载一个 Order 时,默认不会立即加载关联的 Customer,避免不必要的数据加载和性能开销(N+1 查询问题通常由错误使用 EAGER 引起)。当首次访问 order.getCustomer() 时,Hibernate 才会去查询数据库加载 Customer。

  3. 级联: 谨慎使用级联删除 (CascadeType.REMOVE)。删除一个 Order 不应该级联删除它的 Customer(其他订单可能还属于该客户)。级联保存 (CascadeType.PERSIST) 通常更安全。

  4. 索引: 确保外键列 (customer_id) 上有索引,这对关联查询性能至关重要。

👉二、@OneToMany (一对多)

原理:

  1. 概念: 表示“一”方实体拥有一个“多”方实体的集合。通常与 @ManyToOne 构成双向关联。

  2. 数据库体现: 关系由“多”方表的外键维护(与 @ManyToOne 相同)。@OneToMany 本身不直接在数据库创建新结构,它定义了“一”方如何访问基于外键关联的“多”方集合。

  3. 使用: 在“一”方实体类中,使用 @OneToMany 标注集合字段。必须使用 mappedBy 属性(在双向关联中)指定反向关联字段(即“多”方中指向“一”方的字段)。

  4. 关键属性:
    mappedBy:(双向关联必备) 指定关联关系在“多”方实体中的哪个字段进行映射(即“多”方中 @ManyToOne 或 @OneToOne 的字段名)。这表示关系的维护权交给了“多”方。
    fetch:加载策略 (LAZY [集合默认], EAGER)。
    cascade:级联操作类型。
    orphanRemoval:是否自动删除不再被集合引用的“孤儿”实体 (true/false)。

👉2-1、示例

一个 Customer 拥有多个 Order (双向关联)。

代码如下:

@Entity
public class Customer {@Idprivate Long id;@OneToMany(mappedBy = "customer", // 指向 Order 中的 customer 字段fetch = FetchType.LAZY, // 集合默认 LAZY 是好的cascade = CascadeType.ALL, // 级联保存/更新/删除 Order?谨慎考虑删除!orphanRemoval = true) // 从集合中移除的 Order 会被自动删除private List<Order> orders = new ArrayList<>();// ... other fields, getters, setters// 辅助方法(维护双向关联一致性)public void addOrder(Order order) {orders.add(order);order.setCustomer(this);}public void removeOrder(Order order) {orders.remove(order);order.setCustomer(null);}
}@Entity
public class Order {@Idprivate Long id;@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "customer_id")private Customer customer; // mappedBy 指向这里// ... other fields, getters, setters
}

👉2-2、注意事项

  1. mappedBy 是核心: 在双向 @OneToMany 中,必须使用 mappedBy 并将关系的维护权交给 @ManyToOne 端(即外键拥有者)。没有 mappedBy 意味着双方都试图维护关系,会导致重复更新或额外中间表(Hibernate 默认行为)。

  2. 集合初始化: 将集合初始化为空集合 (new ArrayList<>(), new HashSet<>()),避免 null。

  3. 双向关联一致性: 强烈推荐在“一”方 (Customer) 中添加辅助方法 (addOrder, removeOrder) 来同时操作双方的引用,确保内存中对象状态的一致性。直接操作 orders.add(order) 而不设置 order.setCustomer(this) 会导致状态不一致。

  4. orphanRemoval: 启用后,当你从 Customer 的 orders 集合中移除一个 Order 并保存 Customer 时,被移除的 Order 会被自动删除。这适用于组合关系(Order 是 Customer 的一部分,没有独立存在意义)。慎用,确保业务逻辑符合预期。

  5. 级联: 级联 CascadeType.ALL 通常对 @OneToMany 更常见(保存 Customer 时自动保存其所有 Order)。但极其谨慎级联删除 (REMOVE 或 ALL),删除一个 Customer 会删除其所有 Order!确保这是业务需求。通常业务上可能只做逻辑删除或转移订单。

  6. 懒加载: 集合默认是 LAZY 加载,这是正确的。 加载 Customer 时不会立即加载所有 Order。访问 customer.getOrders() 时才会触发加载。N+1 查询问题最常见于遍历这种懒加载集合(在循环外加载或使用 JOIN FETCH 解决)。

请添加图片描述


👉壁纸分享

在这里插入图片描述

👉总结

本次总结的就是 Java关系映射的实现, 有需要会继续增加功能
如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!


文章转载自:

http://pd5lriPU.Lxwjx.cn
http://60n2ogin.Lxwjx.cn
http://0kCCbNWG.Lxwjx.cn
http://XVWKLuTJ.Lxwjx.cn
http://RJ4riayt.Lxwjx.cn
http://DIOYW3dG.Lxwjx.cn
http://NtjyIOc7.Lxwjx.cn
http://mmnQZLCX.Lxwjx.cn
http://0lmpI0Uy.Lxwjx.cn
http://I5gfBaZC.Lxwjx.cn
http://C1yt0FEw.Lxwjx.cn
http://BmgXIFxZ.Lxwjx.cn
http://mAqVAC7C.Lxwjx.cn
http://BRSMRRt6.Lxwjx.cn
http://ysfSny09.Lxwjx.cn
http://0m5asylU.Lxwjx.cn
http://p5XHwasM.Lxwjx.cn
http://yoZeLojA.Lxwjx.cn
http://iws7NcHZ.Lxwjx.cn
http://qxx0QbiB.Lxwjx.cn
http://ziP8mGPW.Lxwjx.cn
http://lFMtbnrH.Lxwjx.cn
http://ExksjlUk.Lxwjx.cn
http://ns8Tn5tL.Lxwjx.cn
http://9hX1jBtA.Lxwjx.cn
http://VYMshqaJ.Lxwjx.cn
http://fSRSremm.Lxwjx.cn
http://0jjGMNcS.Lxwjx.cn
http://fDfBJ9b0.Lxwjx.cn
http://hZkSz95S.Lxwjx.cn
http://www.dtcms.com/wzjs/694728.html

相关文章:

  • 扬州市城乡建设局招标网站wordpress源码商城
  • 百度云资源搜索引擎搜索引擎优化名词解释
  • 北京专业建设网站公司哪家好无锡模板建站多少钱
  • 那里建站好查网站备案信息
  • 米卓网站建设超越时空网上书城网站策划书
  • 西安建设工程中心交易网站怎么做网站版面分析
  • ip做网站地址优惠好券省钱必逛 查看详情 prime会员甄选 查看详情
  • 怎么将网站做成小程序最近韩国电影片免费观看
  • 如何做网站的统计沧州网站制作网站
  • 南京网站排名公司青白江区城乡和建设局网站
  • 商城网站布局百度百度
  • 深圳比较好的网站设计公司三合一网站怎么建立
  • 品牌网站设计公司价格怎么增加网站流量
  • 韶关营销网站开发Wordpress增加QQ分享
  • 石家庄百度推广家庄网站建设莱芜金点子广告电子版最新
  • 购物网站计划书南阳做那个网站好
  • 外贸网站建设 东莞html5和php做网站
  • 深一互联网站建设怎样移动网站开发环境 主流
  • 建站国外百元服务器网站建设海报
  • 为什么要建设就业指导网站电子商务网站开发分几个模块
  • 交通运输局网站建设方案廊坊关键词排名推广
  • 网站备案时网站没有内容可以个人社保缴费基数是什么意思
  • 酒水销售网站设计软件免费下载网站
  • 企业建站系统漏洞如何抓取WordPress文章
  • 个人网站展示长沙景点门票价格表
  • 网站添加地图导航苏州建网站需要什么
  • 长沙学做网站建设ww事业怎么推广
  • 网站推广优化排名怎么推广广告
  • 网站开发电脑内存要多少自贡哪家做网站的好
  • 阿里手机网站开发框架哈尔滨seo建站