欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅
本章的学习目标
- 明白什么是Hibernate
- 掌握XML配置Hibernate
- 掌握注解配置Hibernate
- Hibernate的基本增删改查的使用
Hibernate概述
Hibernate是一个对象关系映射框架,可以通过XML配置文件或者注解将数据库与实体Bean进行映射
Hibernate常规配置步骤
- 配置Hibernate
- 建立实体Bean及其映射文件
- 建立会话(Session)工厂
- 通过会话(Sessioon)工厂操作会话
配置Hibernate
对于配置Hibernate我们有很多种方法,例如XML配置,属性文件配置,编程方式配置,注解配置等.
XML配置 小节完整示例代码下载
编写名为Hibernate.cfg.xml的xml文件放入资源目录,根据下面形式对Hibernate进行配置
com.mysql.jdbc.Driver root jimisun jdbc:mysql://localhost:3306/test true true update org.hibernate.dialect.MySQLDialect true thread
属性文件配置 小节完整示例代码下载
编写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进行增删改查操作