首页 > 代码库 > 【Hibernate】hibernate框架的搭建

【Hibernate】hibernate框架的搭建

1, Hibernate 是什么

Hibernate框架简化了java应用程序与数据库交互的开发。 Hibernate是一个开源,轻量级的ORM(对象关系映射)工具。

2,Hibernate框架的优点

Hibernate框架有很多优点。它们分别如下:

  •     开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具。
  •     快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用。 hibernate框架中有两种类型的缓存:一级缓存和二级缓存。一级缓存默认是启用的。
  •     数据库独立查询: HQL(Hibernate查询语言)是面向对象的SQL版本。 它生成数据库独立查询。 所以你不需要编写数据库特定的查询语句。 在Hibernate之前,如果项目更改了数据库,我们需要更改SQL查询,从而导致维护变得非常复杂。
  •     自动创建表: Hibernate框架提供了自动创建数据库表的功能。 因此,无需手动在数据库中创建表。
  •     简化复杂连接: 在hibernate框架中可轻松获取多个表中的数据。
  •     提供查询统计和数据库状态: Hibernate支持查询缓存,并提供有关查询和数据库状态的统计信息。

3, Hibernate 框架的搭建

首先下载Hibernate的包,然后和数据库驱动包一起到导入到项目中。

3.1 注解方式

首先看一看项目结构:

技术分享

hibernate.cfg.xml文件

技术分享
<?xml version=‘1.0‘ encoding=‘UTF-8‘?><!DOCTYPE hibernate-configuration PUBLIC          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   --><hibernate-configuration>    <session-factory>        <property name="dialect">            org.hibernate.dialect.MySQLDialect        </property>        <property name="connection.url">            jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8        </property>        <property name="connection.username">root</property>        <property name="connection.password">517839</property>        <property name="connection.driver_class">            com.mysql.jdbc.Driver        </property>                <!-- 加载映射描述信息 -->        <mapping class="cn.test.bean.User" />            </session-factory></hibernate-configuration>
hibernate.cfg.xml

User.java文件

技术分享
package cn.test.bean;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="user")//表示对应的表名public class User {        @Id//表示主键    @Column(name="uid")//对应表中的字段名    private Integer id;        @Column(name="uname")//对应表中的字段名    private String name;        @Column(name="upass")//对应表中的字段名    private String password;        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", password=" + password + "]";    }}
User.java

HibernateUtil.java文件

技术分享
package cn.test.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {        public static Session getSession(){        Configuration conf = new Configuration();        conf.configure("hibernate.cfg.xml");//读取连接参数和映射描述信息        SessionFactory factory = conf.buildSessionFactory();        Session session = factory.openSession();        return session;    }}
HibernateUtil.xml

UserTest.java文件

技术分享
package cn.test.test;import org.hibernate.Session;import org.junit.Test;import cn.test.bean.User;import cn.test.util.HibernateUtil;public class UserTest {    @Test    public void testName1() throws Exception {        Session session  = HibernateUtil.getSession();        User user = (User)session.get(User.class, 1);        if(user != null){            System.out.println(user);        }else{            System.out.println("未找到记录");        }        session.close();    }}
UserTest.java

这里的方法: session.get(User.class, 1); 是Hibernate框架封装好的一个类,他表示查询数据表中主键为1的值,并且将结果反射到User的对象中。

3.2 非注解的方式

如果是非注解的方式的话,我们只需要把上面的user.java文件替换调,并且加上User.hbm.xml文件,再在hibernate.cfg.xml文件中改一改映射关系就可以了。

技术分享

hibernate.cfg.xml文件

技术分享
<?xml version=‘1.0‘ encoding=‘UTF-8‘?><!DOCTYPE hibernate-configuration PUBLIC          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   --><hibernate-configuration>    <session-factory>        <property name="dialect">            org.hibernate.dialect.MySQLDialect        </property>        <property name="connection.url">            jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8        </property>        <property name="connection.username">root</property>        <property name="connection.password">517839</property>        <property name="connection.driver_class">            com.mysql.jdbc.Driver        </property>                <!-- 加载映射描述信息 -->        <mapping resource="cn/test/hbm/User.hbm.xml" />            </session-factory></hibernate-configuration>
hibernate.cfg.xml

User.hbm.xml文件

技术分享
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>    <!-- 指定User类对应user表 -->    <class name="cn.test.bean.User" table="user">                <!-- 指定no属性对应userid字段,类型为integer,主键 -->        <id name="id" column="uid" type="integer"></id>                <property name="name" column="uname" type="string"></property>                <property name="password" column="upass" type="string"></property>            </class></hibernate-mapping>
User.hbm.xml

User.java文件

技术分享
package cn.test.bean;public class User {    private Integer id;    private String name;    private String password;        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", password=" + password + "]";    }}
User.java

HibernateUtil.java文件

技术分享
package cn.test.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil {        public static Session getSession(){        Configuration conf = new Configuration();        conf.configure("hibernate.cfg.xml");//读取连接参数和映射描述信息        SessionFactory factory = conf.buildSessionFactory();        Session session = factory.openSession();        return session;    }    }
HibernateUtil.java

UserTest.java文件

技术分享
package cn.test.test;import org.hibernate.Session;import org.junit.Test;import cn.test.bean.User;import cn.test.util.HibernateUtil;public class UserTest {    @Test    public void testName1() throws Exception {        Session session  = HibernateUtil.getSession();        User user = (User)session.get(User.class, 1);        if(user != null){            System.out.println(user);        }else{            System.out.println("未找到记录");        }        session.close();    }}
UserTest.java

 

【Hibernate】hibernate框架的搭建