9.14Hibernate框架学习随笔

开始学框架,其实之前接触到了只是没有系统的去学,现在当做复习吧,然后发现了一些问题:
1.传入中文到MySQL数据库出现乱码,改XX.cfg.xml配置文件

<property name="connection.useUnicode">trueproperty> 
    
<property name="connection.characterEncoding">UTF-8property>

没有加入这段代码前,插入数据到数据库的结果这里写图片描述

加入后9.14Hibernate框架学习随笔_第1张图片
2.然后就是多表关联的时候要注意顺序,9.14Hibernate框架学习随笔_第2张图片
这里写图片描述
比如我这里,一个厂商表,一个商品表,厂商表的主键是商品表的外键,也就是厂商表是主表,商品表是从表,进行数据修改时如果涉及到外键的修改就得要先修改主表,再修改从表,不然运行时会报错。
刚刚住的的GitHub,平时会把每天的学习代码上传,醒悟的晚,现在大四才抓紧时间学东西,边工作边学Binvor
3。一对多关系,有外键的那个从表不要在对应的实体类中定义外键,用主表对应的实体类中的主键,去对应从表类中的外键
我的代码主表实体类

public class Company implements Serializable {
    private int id;
    private String adress;
    private Set product = new HashSet();

从表实体类

public class Product implements Serializable {
    private int id;
    private String name;
//  用它的主键,对应商品表中的外键
    private Company company;

花了我好久时间,先问的朋友然后才来查资料,

要多表查询或者更新删除的时候一定建立他们的双向关联关系,网上说使用cascade这个属性可以解决,但是我的没用,还是老老实实多写几行代码

Configuration cfg = new Configuration().configure("config/procom.cfg.xml");
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
        Transaction tx = session.beginTransaction();
        Company c = session.get(Company.class, 123);
        Product p = session.get(Product.class, 4);
        p.setName("heheh");
        //设置关联
        p.setCompany(c);
        c.getProduct().add(p);
        tx.commit();
        session.close();
        factory.close();

用来更新指定的数据,我这里更新商品名字和外键。

还有一个问题就是关于inverse=”true”,默认是false这个是用来修正外键的值,进行关系维护的,可以提高数据库运行效率,没有它要多进行一次update,有它hibernate就会帮我们解决他分析的很详细可以参考

你可能感兴趣的:(随笔)