9.14Hibernate框架学习随笔

本文分享了在使用MySQL数据库时遇到的中文乱码问题解决方案,通过配置文件加入特定代码解决。同时,介绍了多表关联时的顺序问题,强调了主从表的概念及一对多关系中外键的正确使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

<property name="connection.useUnicode">true</property> 
    <!--解决乱码问题使用utf——8的编码格式  -->
<property name="connection.characterEncoding">UTF-8</property>

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

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

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

从表实体类

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就会帮我们解决他分析的很详细可以参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值