@Entity
public class Customer {
@OneToOne
@JoinColumn(name = "fk_shippingaddress")
private ShippingAddress shippingAddress;
// code
}
One-to-One
Unidirectional One-to-One
Bidirectional One-to-One
Many-to-One
Unidirectional Many-to-One
Unidirectional One-to-Many
Bidirectional Many-to-One
Many-to-Many
Unidirectional Many-to-Many
Bidirectional Many-to-Many
@Entity
public class Customer {
@OneToOne
@JoinColumn(name = "fk_shippingaddress")
private ShippingAddress shippingAddress;
// code
}
public class Example {
public static void main(String[] args){
// code
Customer c = em.find(Customer.class, 1L);
ShippingAddress sa = c.getShippingAddress();
}
}
@Entity
public class Customer {
@OneToOne
@JoinColumn(name = "fk_shippingaddress")
private ShippingAddress shippingAddress;
// code
}
@Entity
public class ShippingAddress {
@OneToOne(mappedBy = "shippingAddress")
private Customer customer;
// code
}
@Entity
public class OrderItem {
@ManyToOne
private Order order;
// code
}
@Entity
public class OrderItem {
@ManyToOne
@JoinColumn(name = "fk_order")
private Order order;
// code
}
public class Example {
public static void main(String[] args){
// code
Order o = em.find(Order.class, 1L);
OrderItem i = new OrderItem();
i.setOrder(o);
em.persist(i);
}
}
@Entity
public class Order {
@OneToMany
private List<OrderItem> items = new ArrayList<OrderItem>();
// code
}
@Entity
public class Order {
@OneToMany
@JoinColumn(name = "fk_order")
private List<OrderItem> items = new ArrayList<OrderItem>();
// code
}
public class Example {
public static void main(String[] args){
// code
Order o = em.find(Order.class, 1L);
OrderItem i = new OrderItem();
o.getItems().add(i);
em.persist(i);
}
}
@Entity
public class OrderItem {
@ManyToOne
@JoinColumn(name = "fk_order")
private Order order;
// code
}
@Entity
public class Order {
@OneToMany(mappedBy = "order")
private List<OrderItem> items = new ArrayList<OrderItem>();
// code
}
public class Example {
public static void main(String[] args){
// code
Order o = em.find(Order.class, 1L);
OrderItem i = new OrderItem();
i.setOrder(o);
o.getItems().add(i);
em.persist(i);
}
}
@Entity
public class Store {
@ManyToMany
private Set<Product> products = new HashSet<Product>();
// code
}
@Entity
public class Store {
@ManyToMany
@JoinTable(name = "store_product",
joinColumns = { @JoinColumn(name = "fk_store") },
inverseJoinColumns = { @JoinColumn(name = "fk_product") })
private Set<Product> products = new HashSet<Product>();
// code
}
public class Example {
public static void main(String[] args){
// code
Store s = em.find(Store.class, 1L);
Product p = new Product();
s.getProducts().add(p);
em.persist(p);
}
}
@Entity
public class Store {
@ManyToMany
@JoinTable(name = "store_product",
joinColumns = { @JoinColumn(name = "fk_store") },
inverseJoinColumns = { @JoinColumn(name = "fk_product") })
private Set<Product> products = new HashSet<Product>();
// code
}
@Entity
public class Product {
@ManyToMany(mappedBy="products")
private Set<Store> stores = new HashSet<Store>();
// code
}
LAZY - FetchType.LAZY
EAGER - FetchType.EAGER
@OneToMany
LAZY
@ManyToOne
EAGER
@ManyToMany
LAZY
@OneToOne
EAGER
CascadeType.PERSIST
CascadeType.REMOVE
CascadeType.DETACH
CascadeType.MERGE
CascadeType.REFRESH
CascadeType.ALL