欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅

本章的学习目标

  1. 明白什么是Hibernate
  2. 掌握XML配置Hibernate
  3. 掌握注解配置Hibernate
  4. Hibernate的基本增删改查的使用

Hibernate概述

Hibernate是一个对象关系映射框架,可以通过XML配置文件或者注解将数据库与实体Bean进行映射

Hibernate常规配置步骤

  1. 配置Hibernate
  2. 建立实体Bean及其映射文件
  3. 建立会话(Session)工厂
  4. 通过会话(Sessioon)工厂操作会话

配置Hibernate

对于配置Hibernate我们有很多种方法,例如XML配置,属性文件配置,编程方式配置,注解配置等.


XML配置 小节完整示例代码下载

编写名为Hibernate.cfg.xml的xml文件放入资源目录,根据下面形式对Hibernate进行配置

<?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 元素用于配置Hibernate中的属性
键:值
-->
<!-- hibernate.connection.driver_class : 连接数据库的驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.username : 连接数据库的用户名 -->
<property name="hibernate.connection.username">root</property> <!-- hibernate.connection.password : 连接数据库的密码 -->
<property name="hibernate.connection.password">jimisun</property> <!-- hibernate.connection.url : 连接数据库的地址,路径 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 -->
<property name="show_sql">true</property> <!-- format_sql: 打印sql语句前,会将sql语句先格式化 -->
<property name="format_sql">true</property> <!-- hbm2ddl.auto: 生成表结构的策略配置
update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构.
如果存在表结构,并且表结构与实体一致,那么不做修改
如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
-->
<property name="hbm2ddl.auto">update</property> <!-- 数据库方言配置
org.hibernate.dialect.MySQLDialect (选择最短的)
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- hibernate.connection.autocommit: 事务自动提交 -->
<property name="hibernate.connection.autocommit">true</property> <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
<property name="hibernate.current_session_context_class">thread</property> <!-- 引入ORM 映射文件
填写src之后的路径
-->
<mapping resource="com/jimisun/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

属性文件配置 小节完整示例代码下载

编写hibernate.properties的properties配置文件放入资源目录,配置形式如下

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
hibernate.connection.username=root
hibernate.connection.password=root
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=update

编程配置

编程配置hibernate在实际开发中使用较少,了解即可

    Configuration configuration = new Configuration();
configuration.addResource("mapping.xml")
.setProperty("connection.username", "root")
.setProperty("connection.password", "jimisun")
.setProperty("dialect", "org.hibernate.dialect.MySWLDialect")
.setProperty("connection.url", "jdbc:mysql://localhost:3306/test") .setProperty("connection.driver_class", "com.mysql.jdbc.Driver");

注解配置 小节完整示例代码下载

注解配置严格上来说并不是一种配置方式,仍然需要使用XML或者properties将Hibernate进行配置,在Bean实体和表之间的映射关系我们就可以使用注解进行配置,就不需要编写Bean对应的映射XML文件

首先使用XML或者properties配置hibernate
@Entity
@Table(name = "user")
public class User { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password; }

Session增删改查示例 小节完整示例代码下载

    /**
* 保存&更新User
*/
static void addUser() {
Transaction transaction = session.beginTransaction();
User user = new User();
user.setUsername("jimisunl");
user.setPassword("jimisun");
session.saveOrUpdate(user);
transaction.commit();
}
    /**
* 查找User
*
* @param theClass
* @param id
* @return
*/
static User getUser(Class theClass, Serializable id) {
return (User) session.find(theClass, id);
}
    /**
* 删除User
* @param object
*/
static void deleteUser(Object object) {
Transaction transaction = session.beginTransaction();
session.delete(object);
transaction.commit();
}

本篇总结

掌握Hibernate的配置方式,能使用的HibernateSessionFactory的Session进行增删改查操作

从零打造在线网盘系统之Hibernate框架起步的更多相关文章

  1. 从零打造在线网盘系统之Struts2框架起步

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  2. 从零打造在线网盘系统之Struts2框架配置全解析

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  3. 从零打造在线网盘系统之Struts2框架核心功能全解析

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  4. 从零打造在线网盘系统之Hibernate配置O/R映射

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  5. 从零打造在线网盘系统之Hibernate查询与更新技术

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  6. 从零打造在线网盘系统之SSH框架整合

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  7. SSH教程从零打造在线网盘系统前言&目录

    本系列教程内容提要 本系列教程是一个学习教程,是关于Java工程师的SSH(Struts2+Spring+Hibernate)系列教程,本教程将会分为四个部分和大家一同打造一个在线网盘系统,由于教程是 ...

  8. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...

  9. Layui框架+PHP打造个人简易版网盘系统

    网盘系统   大家应该都会注册过致命的一些网盘~如百度云.百科介绍:网盘,又称网络U盘.网络硬盘,是由互联网公司推出的在线存储服务,服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储. ...

随机推荐

  1. 【转】WCF服务的创建和发布到IIS

    一. WCF服务的创建 有两种创建方式: 1.WCF服务库 2.WCF服务应用程序 如下图所示: 这里选择WCF服务库.注意事项: 1.WCF服务库是一个类库项目,这里选择.net 3.5版本(版本高 ...

  2. windows 解压缩命令

    首先安装winrar 压缩: 命令:start winrar a test test.py 解压: 命令:start winrar x -y test.rar F:\batShell\test\tes ...

  3. e672. 缩放,剪取,移动,翻转缓冲图像

    AffineTransform tx = new AffineTransform(); tx.scale(scalex, scaley); tx.shear(shiftx, shifty); tx.t ...

  4. 利用Graphviz 可视化GO 数据库

    GO是一个同源蛋白的数据库,按照三大类别BP(生物学过程), MF(分子功能), CC(细胞组分) 对基因的产物-蛋白质进行了分类: 在GO数据库中,本质上是一个有向无环图的数据结构,在三大类别之下, ...

  5. java与c#的语法对比

    1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对应的东西叫做包(package) 2,类的访问控制方面的不同 C#只有两种:publ ...

  6. logging.xml file setfile(null,true) call failed

    定义目录三个方法:一:${catalina.base}或${catalina.home}相对路径配置方法.catalina.home是你配置服务器时自动在环境变量中加的路径,默认是指向tomcat服务 ...

  7. c++ timeval

    struct timeval结构体   struct timeval结构体在time.h中的定义为:struct timeval{__time_t tv_sec;        /* Seconds. ...

  8. mysql中,查看当前数据库下所有的基表,不包括视图

    环境描述: mysql版本:5.5.57-log 操作系统版本:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求描述: 查看当前使用的 ...

  9. android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

             GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView. GridView与ListView的差别在于:ListV ...

  10. .Net WebAPI文档自动化

    1.在VS2015中右键选择工程: 2.点击NuGet程序包: 3.输入Swagger在线搜索: 4.安装:Swagger.Net.UI和Swashbuckle包: 5.打开SwaggerNet.cs ...