ITPub博客

首页 > IT职业 > IT职场 > hibernate学习笔记(2)

hibernate学习笔记(2)

IT职场 作者:yesye 时间:2021-09-09 09:06:40 0 删除 编辑

主要内容:
1.hibernate中 单向一对多关联关系
题外话:
多对一和一对多,本质是一回事。不同的角度而已

一、在数据库里建表
1.建立student表,项目有,id,name,sex,gid。其中把id设为主键,但不设立自增长
2.建立grade表,项目有,gid,gname,gdesc。其中把gid设为主键,但不设立自增长
3.在多方,也就是student表里,建立与grade表的gid的外键关系

二、写持久化类
新建grade.java和student.java两个类
1.序列化
implements Serializable接口,获取序列号
2.添加私有化的id、name等变量,并实现setget方法

三、给各持久化类生成映射文件
用hibernate工具生成下面两个映射文件
Grade.hbm.xml
Student.hbm.xml

具体如下,注意配置:

Grade.hbm.xml

<!-- 在一方配置一对多关联关系-->

Student.hbm.xml

四、配置hibernate.cfg.xml
这个文件在第二步配置也可以。最重要的是配置上面建好的两个映射文件

<!-- 数据库用户名-->root<!-- 数据库密码-->root<!--mysql的驱动下载 -->com.mysql.jdbc.Driver<!--指定数据库名。我创建的是testmysql。后面指定了字符编码,防止数据出现乱码 -->jdbc:mysql:///one2many?userUnicode=true&characterEncoding=UTF-8<!-- 数据库方言-->org.hibernate.dialect.MySQLDialect<!-- 在控制台显示sql语句-->true<!-- 指定自动更新数据表。也可以配置create:这是自动生成,会覆盖原来数据-->update<!--
       true
        --><!-- 配置映射文件 -->

五、写个测试类来验证一下
写测试类之前,因为session会经常被调用,为了以后调用方便,所以先写个工具类。
HibernateUtil.java

public class HibernateUtil {
    private static SessionFactory sessionFactory;
    private static Session session;
    static{
        // 创建配置对象
        Configuration configure = new Configuration().configure();
        // 创建服务注册对象
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configure.getProperties())
                .buildServiceRegistry();
        // 创建会话工厂
        sessionFactory = configure.buildSessionFactory(serviceRegistry);
    }
    public static Session getSession(){
        // 会话对象
        session = sessionFactory.openSession();
        return session; 
    }
    public static void closeSession(){
        if (session.isOpen() || session!=null) {
            session.close();
        }
    }
}

然后写测试类
创建一个班级和两个学生,看看能不能插入到数据库中。结果OK
Test.java

public class Test {

    public static void main(String[] args) {
        Test t=new Test();
        t.add();

    }
    public void add(){
        Grade grade=new Grade("java一班","优秀班级");
        Student stu1=new Student("杨洋","男");
        Student stu2=new Student("李丽","女");
        grade.getStudent().add(stu1);
        grade.getStudent().add(stu2);

        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        session.save(grade);
        session.save(stu1);
        session.save(stu2);
        transaction.commit();
        HibernateUtil.closeSession();

    }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2041/viewspace-2799536/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-06

  • 博文量
    139
  • 访问量
    9684