• Hibernate使用入门


    1.Hibernate是啥?

    百度百科:

     Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

    简单来说:Hibernate是一个轻量级的JDBC封装,我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,也就是与数据库的交互操作。它是在dao层去使用的。

    2.Hibernate入门程序

    (1)创建工程导入jar包

     

    (2)配置核心配置文件

    在src目录下创建一个hibernate.cfg.xml配置文件,名称不能更改

    约束:hibernate-core-5.0.7.Final.jar的org.hibernate包下查找到hibernate-configuration-3.0.dtd文件,打开该文件,找到如下内容:

    <!DOCTYPE hibernate-configuration PUBLIC
    	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    

      

    <?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                <!-- url -->
                <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
                <!-- 用户名 -->
                <property name="hibernate.connection.username">root</property>
                <!-- 密码 -->
                <property name="hibernate.connection.password">123456</property>
                <!-- 方言 -->
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- 选择配置信息 -->
    <!-- 显示sql语句 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 设置数据sql语句格式 -->
    <property name="hibernate.format_sql">true</property>

    <!-- 根据映射关系自动创建数据库 -->
    <property name="hibernate.hbm2ddl.auto">update</property>



    <!-- 加载映射文件 -->
    <mapping resource="Student.hbm.xml"/>

      
           </session-factory> </hibernate-configuration>

     (3)配置约束过程

    首先拷贝约束http协议地址 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd

    add

     (4)创建POJO

    public class Student {
        private int id;
        
        private String name;
        private String sex;
        private String tel;
        private String address;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getTel() {
            return tel;
        }
        public void setTel(String tel) {
            this.tel = tel;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        
        public Student(int id, String name, String sex, String tel, String address) {
            super();
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.tel = tel;
            this.address = address;
        }
        
        public Student() {
            super();
        }
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", tel=" + tel + ", address=" + address + "]";
        }
    
    
    }

     (4)创建映射文件

    Student.hbm.xml

    <?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>
        <!-- name:实体类完整路径        table:当前实体对应数据库中的表名 -->
           <class name="com.nyist.pojo.Student" table="student">
                   <!-- 对应实体中的id标识 -->
                <id name="id" column="id"/>
                
                <!-- 除了id,其他属性都是property标签 -->
                <property name="name" column="sname" />  
                <property name="sex" column="ssex" />  
                <property name="tel" column="stel" />  
                <property name="address" column="saddress" />     
           </class>
    </hibernate-mapping>

    (5)测试类

    public class Test {
        
        //添加信息
        @org.junit.Test
        public void addUser() {
            //创建一个学生
            Student stu = new Student("小明","男","666-777","南阳");
            
            //使用Hibernate完成学生信息存到数据库中
            //1.加载hbernate.cfg.xml文件
            Configuration config = new Configuration().configure();
            //2获取session(相当于得到一个Connection)
            SessionFactory sessionFactory = config.buildSessionFactory();
            Session session = sessionFactory.openSession();
            //3.开启事务
            session.beginTransaction();
            //4.操作
            session.save(stu);
            //5.事务提交
            session.getTransaction().commit();
            //6.关闭资源
            session.close();
            sessionFactory.close();
        }
        
        //根据id查询一个Student对象
        @org.junit.Test
        public void findStudentById() {
            Configuration config = new Configuration().configure();
            SessionFactory sessionFactory = config.buildSessionFactory();
            Session session = sessionFactory.openSession();
            
            session.beginTransaction();
            Student student = session.get(Student.class, 29);
            System.out.println(student);
            
            session.getTransaction().commit();
            session.close();
            sessionFactory.close();
            
        }
        
        //修改操作
        @org.junit.Test
        public void updateStudent() {
            Configuration config = new Configuration().configure();
            
            SessionFactory sessionFactory = config.buildSessionFactory();
            Session session = sessionFactory.openSession();
            session.beginTransaction();
            
            Student student = session.get(Student.class, 29);
            student.setTel("6666-7777");
            session.update(student);//更新stu
            
            session.getTransaction().commit();
            session.close();
            sessionFactory.close();
            
        }
        
        //删除操作(根据id删除)
        @org.junit.Test
        public void deleteStudentById() {
            Configuration config = new Configuration().configure();
            SessionFactory sessionFactory = config.buildSessionFactory();
            Session session = sessionFactory.openSession();
            
            session.beginTransaction();
            
            Student student = session.get(Student.class, 27);
            session.delete(student);//删除stu
            
            session.getTransaction().commit();
            session.close();
            sessionFactory.close();
            
            
        }
        
        //查询所有Student
        @org.junit.Test
        public void findAll() {
            Configuration config = new Configuration().configure();
            SessionFactory sessionFactory = config.buildSessionFactory();
            Session session = sessionFactory.openSession();
            
            session.beginTransaction();
            
            /*
             * Query query = session.createQuery("from Student"); 
             * List<Student> list = query.list();
             */
            
            Criteria createCriteria = session.createCriteria(Student.class);
            List<Student> list = createCriteria.list();
            
            System.out.println(list);
            
            session.getTransaction().commit();
            session.close();
            sessionFactory.close();
            
            
            
        }
        
        
    
    }

    总结步骤

    1. Configuration config = new Configuration().configure();读取解析hibenate.cfg.xml配置文件
    2. sessionFactory = config.buildSessionFactory();  得到sessionFactory
    3. Session session  = sessionFactory.openSession(); 得到session
    4. 开启事务session.beginTransaction();
    5. 执行操作
    6. 提交事务sesseion.getTransaction().commit();
    7. 关闭session。
    8. 关闭sessionFactory。
  • 相关阅读:
    面试题1:赋值运算符函数
    面试题:寻找热门查询
    面试题9:斐波那契数列
    Java中的volatile关键字
    二分查找算法
    面试题8:旋转数组的最小数字
    面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
    百度面试题:从海量日志中提取访问百度次数最多的IP
    面试总结
    java垃圾回收
  • 原文地址:https://www.cnblogs.com/duyachao/p/11364920.html
Copyright © 2020-2023  润新知