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.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

这里的方法: 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框架的搭建的更多相关文章

  1. Struts2+Spring+Hibernate(SSH)框架的搭建

    首先需要下载struts2 ,spring4,hibernate5  的资源包; struts2资源包下载路径:http://www.apache.org/spring资源包下载路径:http://p ...

  2. struts2+spring+hibernate(SSH)框架的搭建和总结

    SSH框架:struts2+spring+hibernate,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. struts2+spring+hibernat ...

  3. Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程

    | 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...

  4. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  5. hibernate篇章二--成就搭建hibernate框架

    在网上的资料很多,但是成功搭建一个Hibernate框架的很少,下面我将用一个简单的例子成功搭建一个Hibernate框架给大伙瞧瞧 该链接中有源代码和数据库,例子很简单,只是往数据库中的person ...

  6. Hibernate框架_搭建第一个Hibernate框架

    一.eclipse搭建 A.创建动态web项目 New-->Dynamic web project(web project) B.导入jar包 1.数据库驱动包 2.hibernate开发必须j ...

  7. SSH框架的搭建和测试(Spring + Struts2 + Hibernate)

    SSH框架实现了视图.控制器.和模型的彻底分离,同时还实现了业务逻辑层与持久层的分离. Spring实现了MVC中的 Controller的功能,Struts实现Web视图的功能,Hibernate则 ...

  8. hibernate框架的搭建与简单实现增删改

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...

  9. (01)hibernate框架环境搭建及测试

    ---恢复内容开始--- 1.创建javaweb项目 2.导包 hibernate包 hibernate\lib\required\*.jar 数据库驱动包 mysql-connector-java- ...

随机推荐

  1. Eclipse 2017最佳20个插件

    https://www.infoworld.com/article/2606814/development-tools/development-tools-12-eclipse-plug-ins-ev ...

  2. You must have a copy of the scp binary locally to use the scp feature

    在运行docker-machine scp 命令的时候,报错: "You must have a copy of the scp binary locally to use the scp ...

  3. Tensorflow高速入门2--实现手写数字识别

    Tensorflow高速入门2–实现手写数字识别 环境: 虚拟机ubuntun16.0.4 Tensorflow 版本号:0.12.0(仅使用cpu下) Tensorflow安装见: http://b ...

  4. Redis 实现队列http://igeekbar.com/igeekbar/post/436.htm

    场景说明: ·用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时 ·高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后台在去处理这些请求 ·抢购场景,先入 ...

  5. Android 原生 Android ActionBar Tab (滑动)导航

    本文内容 环境 项目结构 演示一:ActionBar Tab 导航 演示二:ActionBar Tab 带滑动导航 本文演示 Tab 导航.第一个演示,是基本的 Tab 导航,第二个是带滑动的 Tab ...

  6. js undefined易错分析

    undefined 以下是错误写法: data = undefined; alert(undefined==false);//这样判断会输出false; if(data!=undefined || d ...

  7. 【转】Java四种线程池的使用

    Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...

  8. time series review

    https://pdfs.semanticscholar.org/fc9c/1a94a15dd44c8c61b3e4841ecb9505f8cd37.pdf https://edoc.hu-berli ...

  9. github使用入门

    连接地址 github使用入门 连接地址: https://zhuanlan.zhihu.com/p/21193604?refer=passer

  10. LIST OF NOSQL DATABASES [currently 150]

    http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...