本节将为大家介绍ORM模型
ORM:对象关系映射模型,也就是把对象映射到数据库中
其中,类映射为数据库中的表,类的成员变量映射为表中的字段,类的OID映射为表的主键,类的实体映射为表中的记录,而类之间的关联关系映射为表中的外键。这也是ORM的核心所在。
ORM示例:
下面,以订单 ----> 订单明细为例,介绍ORM的简单使用
首先,在oracle数据库中,分别创建订单表,以及与之关联的订单明细表。同时,创建两张表的序列。
创建订单表
SQL> CREATE TABLE t_order(
2 id number(10) primary key,
3 ordered_date date not null,
4 shipped_date date,
5 total number(10,2)
6 );
创建订单明细表
SQL> CREATE TABLE t_orderline(
2 id number(10) primary key,
3 price number(10,2),
4 quantity number(10),
5 product varchar2(30),
6 order_id number(10) references t_order(id)
7 );
创建序列
SQL> CREATE SEQUENCE t_order_seq
2 start with 1
3 increment by 1;
序列已创建。
SQL> CREATE SEQUENCE t_orderline_seq
2 start with 1
3 increment by 1;
序列已创建。
然后,在POJO包中,创建与两张表相对应的POJO类,这里我们分别命名为Order类和Orderline类。
订单Order类:
package com.iotek.pojo;
import java.io.Serializable;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
public class Order implements Serializable {
private Long id;
private Date orderedDate;
private Date shippedDate;
private Double total;
private List<Orderline> orderlines = new ArrayList<Orderline>();
public Order() {}
public Order(Long id, Date orderedDate, Date shippedDate, Double total, List<Orderline> orderlines) {
super();
this.id = id;
this.orderedDate = orderedDate;
this.shippedDate = shippedDate;
this.total = total;
this.orderlines = orderlines;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getOrderedDate() {
return orderedDate;
}
public void setOrderedDate(Date orderedDate) {
this.orderedDate = orderedDate;
}
public Date getShippedDate() {
return shippedDate;
}
public void setShippedDate(Date shippedDate) {
this.shippedDate = shippedDate;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public List<Orderline> getOrderlines() {
return orderlines;
}
public void setOrderlines(List<Orderline> orderlines) {
this.orderlines = orderlines;
}
@Override
public String toString() {
return "Order [id=" + id + ", orderedDate=" + orderedDate + ", shippedDate=" + shippedDate + ", total=" + total
+ ", orderlines=" + orderlines + "]";
}
}
订单明细:Orderline类
package com.iotek.pojo;
import java.io.Serializable;
public class Orderline implements Serializable {
private Long id;
private Double price;
private Long quantity;
private String product;
private Order order;
public Orderline() {}
public Orderline(Long id, Double price, Long quantity, String product, Order order) {
super();
this.id = id;
this.price = price;
this.quantity = quantity;
this.product = product;
this.order = order;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Long getQuantity() {
return quantity;
}
public void setQuantity(Long quantity) {
this.quantity = quantity;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
@Override
public String toString() {
return "Orderline [id=" + id + ", price=" + price + ", quantity=" + quantity + ", product=" + product
+ ", order=" + order + "]";
}
}
网友评论