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();
总结步骤
-
Configuration config = new Configuration().configure();读取解析hibenate.cfg.xml配置文件
-
sessionFactory = config.buildSessionFactory(); 得到sessionFactory
-
Session session = sessionFactory.openSession(); 得到session
-
开启事务session.beginTransaction();
-
执行操作
-
提交事务sesseion.getTransaction().commit();
-
关闭session。
-
关闭sessionFactory。
以上是关于Hibernate使用入门的主要内容,如果未能解决你的问题,请参考以下文章