hibernate可能市面上已经很少有人在用了,但作为一门技术,但还是讲一下,因为后面我可能会给你们介绍spring boot,可能会参杂一些hibernate的技术。
那么什么是hibernate
它是ORM框架/持久层框架
object reference mapping
通过管理对象来改变数据库中的数据
通过管理对象来操作数据库
当然它的优势:跨数据库的无缝移植
如何在项目中添加hibernate支持(手动添加)
1 添加hibernate相关依赖
2 在resource目录下添加hibernate.cfg.xml(核心配置文件)
2.1 添加DTD支持
2.2 添加Hibernate的配置
2.3 数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
2.4 调试相关(show_sql|format_sql)
2.5在开发阶段再创建实体类和实体映射文件(*.hbm.xml)
实体必须实现Serializable接口
小结:hibernate.cfg.xml有且只有一个 /*.hbm.xml有且又多个
实体映射文件一定要加到核心配置文件(代码如下)
<?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 name="connection.username">root</property>
<!-- 数据库登录密码 -->
<property name="connection.password">123</property>
<!-- 连接数据库 -->
<property name="connection.url">jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8</property>
<!-- mysql驱动架包 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置本地事物 -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 配置开发调试所用的 show_sql fomart_sql-->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- 配置映射文件 -->
<mapping resource="com/damei/entity/user.xml"/>
</session-factory>
</hibernate-configuration>
在开发阶段再创建实体类和实体映射文件(*.hbm.xml)( 实体映射文件具体代码)注:实体映射文件要加到核心配置文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name:类的权限类名 table:对应的数据库表名 -->
<class name="com.damei.entity.User" table="t_hibernate_user">
<!-- name:类属性 type:数据类型 column:数据库对应的列段 -->
<id name="id" type="java.lang.Integer" column="id">
<!-- 数据库表的主键 生成策略 increment:代表id自增长-->
<generator class="increment"></generator>
</id>
<!-- name:类属性 type:数据类型 column:数据库对应的列段 -->
<property name="user_name" type="java.lang.String" column="user_name"></property>
<property name="user_upwd" type="java.lang.String" column="user_pwd"></property>
<property name="real_name" type="java.lang.String" column="real_name"></property>
<property name="user_usex" type="java.lang.String" column="sex"></property>
<property name="birthday" type="java.sql.Date" column="birthday"></property>
<!-- insert:自动增加 update:修改-->
<property name="create_datetime" type="java.sql.Timestamp" column="create_datetime" insert="false" update="false"></property>
<property name="user_remark" type="java.lang.String" column="remark"></property>
</class>
</hibernate-mapping>
配置问完之测试一下下
package com.damei.dao;
import java.sql.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.damei.entity.User;
public class AddUser {
/**
* HiberNate 增加
* @param args
*/
public static void main(String[] args) {
/*
* 1: HiberNate.xml进行建模
* 2:通过建模得到config文件 获取所置的session-factory
* 3:获取session 会话 (操作数据库)
* 4:开启事务
* 5:操作数据库
* 6:提交事务
* 7:关闭session连接
*/
//HiberNate.xml进行建模
Configuration configure = new Configuration().configure("hibernate.cfg.xml");
//获取所置的session-factory里面的所有信息
SessionFactory buildSessionFactory = configure.buildSessionFactory();
//开启会话
Session openSession = buildSessionFactory.openSession();
//开启事务
Transaction beginTransaction = openSession.beginTransaction();
//操作数据库
User user = new User();
user.setUser_name("傻子");
user.setUser_upwd("123");
user.setReal_name("吃货");
user.setUser_usex("男");
user.setBirthday(new Date(new java.util.Date().getTime()));
openSession.save(user);
//提交事务
beginTransaction.commit();
//关闭会话
buildSessionFactory.close();
}
}
增加操作时,会先查再增 当然其他的小功能也是