理解 Java 中的关系映射(JPA/Hibernate)是构建数据库驱动应用的核心。下面详细解析 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 的原理、使用及关键注意事项:
核心原理: 这些注解将对象间的关联关系(基于面向对象)映射到数据库表间的关联关系(基于关系模型)。ORM 框架(如 Hibernate)负责在运行时根据这些注解生成 SQL 语句(JOIN, 子查询等)来加载或保存相关联的数据。
博客将会介绍如何实现Java关系映射。希望这篇博客对Unity的开发者有所帮助。 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 欢迎点赞评论哦.下面就让我们进入正文吧 !
提示:以下是本篇文章正文内容,下面案例可供参考
原理:
多个 Order (订单) 属于一个 Customer (客户)。 代码如下:
@Entity
public class Order {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY) // 推荐使用懒加载
@JoinColumn(name = "customer_id") // 指定外键列名,可选
private Customer customer; // 引用“一”方
// ... other fields, getters, setters
}
@Entity
public class Customer {
@Id
private Long id;
// ... other fields, getters, setters
// 通常不需要在这里定义反向的 @OneToMany,除非需要双向关联
}原理:
一个 Customer 拥有多个 Order (双向关联)。
代码如下:
@Entity
public class Customer {
@Id
private 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 {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "customer_id")
private Customer customer; // mappedBy 指向这里
// ... other fields, getters, setters
}本次总结的就是 Java关系映射的实现, 有需要会继续增加功能 如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢 你的点赞就是对博主的支持,有问题记得留言评论哦! 不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!