Hibernate使用入门

Posted duyachao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

以上是关于Hibernate使用入门的主要内容,如果未能解决你的问题,请参考以下文章

框架之 hibernate简单入门

hibernate入门

Hibernate使用入门

Hibernate入门笔记_01_hibernate配置

Hibernate入门1

Hibernate入门