分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

从零打造在线网盘系统之Hibernate框架起步

发布时间:2023-09-06 02:21责任编辑:蔡小小关键词:Hibernate

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

本章的学习目标

  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.MySQLDialecthibernate.connection.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8hibernate.connection.username=roothibernate.connection.password=roothibernate.show_sql=truehibernate.format_sql=truehibernate.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框架起步

原文地址:https://www.cnblogs.com/jimisun/p/9938384.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved