文章目录
什么是hibernate?
hibernate是ORM的一种框架,也被称为持久层框架。
什么是ORM
ORM也称为(Object Relational Mapping):对象关系映射。
对象与关系型数据库之间的映射管理框架
hibernate的优势在哪?
跨数据库的无缝移植(SqlServer、Oracle、MySql)
hibernate的创建
2,基于Maven创建,在项目中添加hibernate(5.2.12.Final)支持
2.1 添加hibernate相关依赖
2.2 在resource目录下添加hibernate.cfg.xml(核心配置文件)
2.2.1 添加DTD支持
2.2.2 添加Hibernate的配置 mysql的jar使用5.x即可
2.2.2.1 数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
2.2.2.2 调试相关(show_sql|format_sql)
2.3 在开发阶段再创建实体类和实体映射文件(.hbm.xml)
实体必须实现Serializable接口
小结:hibernate.cfg.xml(1)/.hbm.xml(N)
实体映射文件一定要加到核心配置文件
代码演示
1,在Pom.xml只添加需要下载的jar包
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency>
添加完后可以在Libraries中看到加载的jar包
2,在resource目录下添加hibernate.cfg.xml(核心配置文件)
2.1添加DTD文件约束
DTD约束查找——》找到hibernate-core-5.2.12.Final.jar——》展开滑到最底部——》找到hibernate-configuration-30.dtd
3,数据库连接配置
<?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>
<!-- 数据库相关配置 -->
<!-- connection.username|connection.password|connection.url|connection.driver_class|dialect -->
<!-- 数据库账号名称 -->
<property name="connection.username">root</property>
<!-- 数据库密码 -->
<property name="connection.password">123</property>
<!-- 连接的绝对路径 -->
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/liuchunming?useUnicode=true&characterEncoding=utf8&userSSL=false
</property>
<!-- 驱动的绝对路径 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库方言配置 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 调试相关配置 (show_sql|format_sql)-->
<!--hibernate运行过程是否展示自动生成的SQL代码 -->
<property name="show_sql">true</property>
<!-- 是否规范化输出SQL代码 -->
<property name="format_sql"></property>
<!-- 实体映射相关配置 -->
<mapping resource="com/liuchunming/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
注意: 这是实体配置文件
<!-- 实体映射相关配置 -->
<mapping resource="com/liuchunming/entity/User.hbm.xml"/>
实体创建
我这里get/set方法/构造方法/toString省略了,就没有贴出来了
package com.liuchunming.entity;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String userName;
private String userPwd;
private String realName;
private String sex;
private Date birthday;
private Timestamp createDatetime;
private String remark;
}
数据库字段
创建实体配置文件
在User实体类同级下创建User.hbm.xml文件
DTD约束:和上面相同操作
详细解释在文中注释
<?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:实体类的全路径
tabel:数据库表名
-->
<class name="com.liuchunming.entity.User" table="t_user_hb">
<!-- 用于设置数据库表结构中主键列的生成方式 -->
<!--
id:用于设置数据表结构中主键列的生成方式
name:实体类中属性名称
type:Java中的数据类型
cloumn:数据库表字段名称
-->
<id name="id" type="java.lang.Integer" column="id">
<!--
class:定义主键列生成的方式:hibernate管理,数据库管理,开发者管理
assgine:交给开发者管理
identity:表示自增长
sequcene->native->identity:交给数据库管理
increment:hibernate管理
-->
<generator class="increment"></generator>
</id>
<property name="userName" type="java.lang.String" column="user_name"></property>
<property name="userPwd" type="java.lang.String" column="user_pwd"></property>
<property name="realName" type="java.lang.String" column="real_name"></property>
<property name="sex" type="java.lang.String" column="sex"></property>
<property name="birthday" type="java.util.Date" column="birthday"></property>
<!--
声明insert和update为:false;不需要操作
-->
<property name="createDatetime" insert="false" type="timestamp" column="create_datetime"></property>
<property name="remark" type="java.lang.String" column="remark"></property>
</class>
</hibernate-mapping>
测试
package com.liuchunming.test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.liuchunming.entity.User;
public class test {
public static void main(String[] args) {
test t=new test();
t.users();
}
public void users() {
//创建hibernate核心类
Configuration cfg =new Configuration();
//读取配置文件
cfg.configure("hibernate.cfg.xml");
//创建session工厂(只有一次)
SessionFactory sf = cfg.buildSessionFactory();
//获取session
Session session = sf.openSession();
//开启事务
Transaction ts=session.beginTransaction();
//新增
User user =new User();
user.setUserName("张三");
user.setUserPwd("1234");
user.setRealName("王老三");
user.setSex("男");
user.setBirthday(new Date());
user.setRemark("有钱");
session.save(user);
/*//修改 update 需要遵循先查再改,局部修改
user.setId(3);
User u = session.get(User.class,user.getId());
if(null!=u) {
u.setRemark("没钱了");
session.update(u);
}*/
/*//删除
user.setId(3);
User u = session.get(User.class,user.getId());
if(null!=u) {
session.delete(u);
}*/
//事务提交
ts.commit();
//关闭
session.close();
}
}
数据库增加成功
增加修改都是可以的
总结
今天的分享就到这里了如果有什么不对的地方欢迎大家在评论区留言交流改进!!