在關系中,或多或少的表之間有復雜的關聯(lián)關系
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、麻章網(wǎng)站維護、網(wǎng)站推廣。
這里測試 一對多 關聯(lián)關系的配置
開發(fā)步驟就不多說了。直接看一個示例。
users 用戶 和 shop商品訂單表
分析:一個用戶可以有多個商品訂單,一個訂單只屬于一個用戶。
這樣就構成了一對多的關聯(lián)關系。
這里用的是oracle 數(shù)據(jù)庫
users 和 shop 數(shù)據(jù)庫表
create table users( id number(7) primary key, name nvarchar2(20), pass nvarchar2(20), address nvarchar2(50) ) create table shop( id number(7) primary key, price number(7), sh_name nvarchar2(50), us_id references users(id) )
2.users 實體
package com.hib.entity; import java.util.HashSet; import java.util.Set; public class Users { private Integer id; private String name; private String pass; private String address; private Setshop = new HashSet (); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Set getShop() { return shop; } public void setShop(Set shop) { this.shop = shop; } public Users(Integer id, String name, String pass, String address) { super(); this.id = id; this.name = name; this.pass = pass; this.address = address; } public Users() { super(); } @Override public String toString() { return "Users [id=" + id + ", name=" + name + ", pass=" + pass + ", address=" + address + "]"; } }
shop 實體
package com.hib.entity; public class Shop { private Integer id; private Integer price; private String sh_name; private Users users; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getSh_name() { return sh_name; } public void setSh_name(String sh_name) { this.sh_name = sh_name; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public Users getUsers() { return users; } public void setUsers(Users users) { this.users = users; } public Shop(Integer id, String sh_name, Integer price) { super(); this.id = id; this.sh_name = sh_name; this.price = price; } public Shop() { super(); } @Override public String toString() { return "Shop [id=" + id + ", sh_name=" + sh_name + ", price=" + price + "]"; } }
3.shop.hbm.xml映射文件配置
4. 不要忘記注冊。
oracle.jdbc.OracleDriver ssh ssh jdbc:oracle:thin:@127.0.0.1:1521:xe org.hibernate.dialect.Oracle10gDialect true true thread
5.測試 級聯(lián)插入測試
@Test public void insert(){ Session session = HibUtil.getSession(); Transaction tx = session.beginTransaction(); Users users = new Users(null, "苦力強", "kuliqiang", "zg"); Shop shop = new Shop(null, "橙子", 2800); users.getShop().add(shop); shop.setUsers(users); session.save(users); tx.commit(); }
記得要設置級聯(lián)關系。
測試 查詢
@Test public void query(){ Session session = HibUtil.getSession(); Transaction tx = session.beginTransaction(); Users users = (Users)session.get(Users.class, 1); for (Shop shop : users.getShop()) { System.out.println(shop); } System.out.println(users); tx.commit(); }
更新和刪除就不測試了,更新先查詢出來,再修改值,然后更新就可以了。
刪除直接查詢出來,刪除就可以了。
如果是單向的1對多 上面的可以修改為
users 實體不改變
shop 中的 users去掉
配置文件中 去掉下面這段配置
4. 配置文件中 inverse="true" 去掉,告訴主表,來維護從表
其他的還是一樣操作。