ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hibernate使用入门

2019-08-16 16:55:47  阅读:214  来源: 互联网

标签:Hibernate 入门 sessionFactory session Student 使用 Configuration public String


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,入门,sessionFactory,session,Student,使用,Configuration,public,String
来源: https://www.cnblogs.com/duyachao/p/11364920.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有