hibernate学习笔记三

来源:互联网 发布:teackpad Windows 编辑:程序博客网 时间:2024/06/01 10:17
今天学习了一对一 一对多 多对多的hibernate关系:


多对一的类,多的类对于一的类只需创建一个 Category category;对象   而一对多或者多对多   一或多的类需要创建一个set集合。
public class Product {
Set<User> users;

Category category;
}


这当中product与users是多对多。

与category是多对一。



Category和Product是一对多的关系    
步骤1为Category增加一个Set集合    
步骤2 : 为Category.hbm.xml增加one-to-many映射    
步骤3 : TestHibernate 测试one-to-many关系    



多对多的就不用专门建表



当mysql要删除一个表出现1217错误时,需要把以这个表主键为外键的表都删除,才能删除此表。




当hibernate插入错误的时候,也要考虑一下所对应的数据库表是否多了或者少了属性。

多去看看caused by,一般错误都在那里。




hibernate实现事务: s.beginTransaction();//事务开始
   在这中间插入一组事务  事务要么都执行要么都不执行
  s.getTransaction().commit();//事务结束


mysql只有当表的类型是innodb的时候才支持事务。




延迟加载:分为属性的延迟加载和关系延迟加载。


属性的延迟加载:当使用load方式来获取对象的时候,只有访问了这个对象的属性hibernate才会到数据库中进行查询。否则不会访问数据库。


关系延迟加载:一对多多对多都可以使用
<set name="products" lazy="false"> false 改成true
同理。



原创粉丝点击