1. 程式人生 > >hibernate通過pojo自動建表操作

hibernate通過pojo自動建表操作

1. 多對一
如球員和球隊的關係:多個球員在同一個球隊中。
1.1 類圖
TeamPojo:屬性 + set/get
public class TeamPojo{
private Integer teamId;
private String teamName;
private String teamAddr;
// set+get
}

MemberPojo:需要額外埋一個TeamPojo例項
public class MemberPojo{
private Integer memberId;
private String memberName;
private String memberAddr;
private TeamPojo team;//在“一”的一端、埋一個“多”的物件。
// set+get
}

1.2 配置HBM檔案
TeamHiber
MemberHiber:使用<many-to-one>標籤實現多對一搭配
tips:所有name對應pojo的屬性名,所有column對應資料庫表的列名。
tips:many-to-one的column是多對一關係中,外來鍵的欄位名。
tips:如果使用java手段來建立資料庫,那麼所有column都是自動生成的,建議設定
與name同名(many-to-one的外來鍵column與被連線的表的主鍵同名),方便管理。
1.3 註冊HBM檔案
在hibernate.cfg.xml檔案中註冊這兩個HBM檔案。
1.4 測試
先利用JAVA生成資料庫表。

public static void main(String[] args) {
        // 建立Configuration物件,繫結cfg檔案
        Configuration cfg = new Configuration().configure("/hibernate.cfg.xml");
        // 指定SchemaExport物件,負責匯出資料庫表(需要繫結Configuration物件)
        SchemaExport export = new SchemaExport(cfg);
        // 建立資料庫表,p1:是否在控制檯顯示,p2:是否要匯出
        export.create(true, true);
    }

1.5 測試自動向資料庫中新增資料:
public static void main(String[] args) {
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
try {
// 建立一隻球隊
TeamPojo team = new TeamPojo();
team.setTeamName("湖人");
team.setTeamAddr("太平洋");
// 建立兩個球員
MemberPojo member01 = new MemberPojo();
member01.setMemberName("科比");
member01.setMemberDate(new Date());
member01.setMemberAddr("日本");
member01.setTeam(team);
MemberPojo member02 = new MemberPojo();
member02.setMemberName("艾弗森");
member02.setMemberDate(new Date());
member02.setMemberAddr("韓國");
member02.setTeam(team);
session.save(team); // 球隊入庫
session.save(member01); // 科比入庫
session.save(member02); // 艾弗森入庫
transaction.commit();// 提交事物
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();// 發生異常回滾事物
}finally{
HibernateUtils.closeResource(session);// 關閉session,節省資源
}
}