• Hibernate系列1:入门程序


    1.传统的java数据库连接 

      在传统的开发中,如果要建立java程序和数据库的连接,通常采用JDBC或者Apache Commons DbUtils开发包来完成。他们分别有以下特点:

      JDBC:

        优点:1.底层连接,效率高

        缺点:需要手写sql语句,代码重复多,封装结果集繁琐

      DbUtils:

        优点:结果集封装可直接调用,封装JDBC,效率较高

        缺点:需要手写sql语句

    2.Hibernate的概念:

      Hibernate是一个  轻量级、企业级、开源的 持久层 ORM框架:

    • 轻量级:依赖资源少
    • 企业级:适合在企业级应用中使用
    • 开源:源代码开放
    • 持久层:完成数据持久化的逻辑层
    • ORM: Object Relationship Mapping,对象关系映射

     

    3.Hibernate的入门程序:

      • 创建项目,java项目或web项目,此处我们创建java项目
      • 导入jar包,导入需要的mysql-connector,hibernate核心jar包

          

      • 创建实体类
    //学生实体类
    package domain;
    import java.io.Serializable;
    public class Student implements Serializable {
    
        private int stuId;
        private String stuName;
        private String stuMemo;
        
        public int getStuId() {
            return stuId;
        }
        public void setStuId(int stuId) {
            this.stuId = stuId;
        }
        public String getStuName() {
            return stuName;
        }
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
        public String getStuMemo() {
            return stuMemo;
        }
        public void setStuMemo(String stuMemo) {
            this.stuMemo = stuMemo;
        }
        @Override
        public String toString() {
            return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuMemo=" + stuMemo + "]";
        }    
    }
      • 编写配置文件,包括Hibernate实体类映射文件和Hibernate主配置文件
    //Student实体类映射配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="domain.Student">
            <id name="stuId" column="stu_id">
            <generator class="native"/>
            </id>
            <property name="stuName" column="stu_name"></property>
            <property name="stuMemo" column="stu_memo"></property>
        </class>
    </hibernate-mapping>

      

    //Hibernate主配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
                            <!-- 第一步:配置数据库连接信息 -->
            <property name="hibernateDialect">org.hibernate.dialect.MYSQLDialect</property>
            <property name="hibernate.connection.driver.class">com.mysql.jdbc.Driver</property>    
            <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=GMT</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">root</property>
                            <!-- 第二步:配置hibernate其他配置 -->
            <property name="hibernate.show_sql">true</property>
            <property name="hibernate.hbm2ddl.auto">update</property>
            <property name="hibernate.current_session_context_class">thread</property>
                            <!-- 第三步:导入映射文件 -->
            <mapping resource="domain/Student.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
    • 编写测试类并运行:
    package test;
    
    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

      import org.hibernate.cfg.Configuration;

    import org.hibernate.Transaction;
    import org.junit.jupiter.api.Test;
    
    import util.HibernateUtils;
    
    public class HibernateTest01 {
        
        @Test
        public void test1() 
        {
            Configuration config = new Configuration().configure();
            SessionFactory SF = config.buildSessionFactory();
            Session s = SF.openSession();
            Transaction tx = s.beginTransaction();                
            tx.commit();
            s.close();
            SF.close();
        }
    
    }

    运行上述单元测试,可以从输出中看到Hibernate帮我们完成了创建表的操作:

        下面我们完成一个简单的插入操作:

      

    package test;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.jupiter.api.Test;
    
    import domain.Student;
    public class HibernateTest01 {
        
        @Test
        public void test1() 
        {
            Configuration config = new Configuration().configure();
            SessionFactory SF = config.buildSessionFactory();
            Session s = SF.openSession();
            Transaction tx = s.beginTransaction();       
            Student s1 = new Student();
           // s1.setStuId(1);  数据库主键自动生成,可省略此行
            s1.setStuName("uzi");
            s1.setStuMemo("a famous adc");
            s.save(s1);        
            tx.commit();
            s.close();
            SF.close();
        }
    }

     查看数据库中studnt表,结果如下:

     

  • 相关阅读:
    [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
    手算平方根和基于 Java BigInteger 的大整数平方根的实现
    Spyder项目创建,打开与使用
    手动实现自己的spring事务注解
    springboot2.x配置druid sql监控
    基于zookeeper实现分布式锁
    数据库中间件之mycat读写分离
    springboot + shiro 构建权限模块
    数据库中间件之mycat安装部署(一)
    使用jdk8 stream简化集合操作
  • 原文地址:https://www.cnblogs.com/LearnAndGet/p/9528395.html
Copyright © 2020-2023  润新知