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,节省资源
}
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值