HIBERNATE入门(初级入门)
发布日期:2021-05-04 01:05:55 浏览次数:35 分类:技术文章

本文共 12794 字,大约阅读时间需要 42 分钟。

什么是HIBERNATE

ORM框架:注1:Object Relational Mapping (对象关系映射)
持久层框架
优势:跨数据库的无缝移植

如何在项目中添加hibernate支持(手动添加)

1.添加hibernate相关依赖

在这里插入图片描述

Pom.xml源码:

4.0.0
com.zking
hibedate01
war
0.0.1-SNAPSHOT
hibedate01 Maven Webapp
http://maven.apache.org
5.2.12.Final
4.12
2.5.13
5.1.44
2.5.1
4.0.1
1.2
1.1.2
8.5.20
1.2.17
2.9.3
log4j
log4j
${log4j.version}
junit
junit
${junit.version}
test
javax.servlet
javax.servlet-api
${servlet.version}
provided
org.apache.struts
struts2-core
${struts2.version}
mysql
mysql-connector-java
${mysql.version}
com.belerweb
pinyin4j
${pinyin4j.version}
javax.servlet.jsp.jstl
jstl
${jstl.version}
taglibs
standard
${standard.version}
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
jackson-annotations
com.fasterxml.jackson.core
com.fasterxml.jackson.core
jackson-core
${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
org.hibernate
hibernate-core
${hibernate.version}
org.hibernate
hibernate-ehcache
5.2.12.Final
net.sf.ehcache
ehcache
2.10.0
org.slf4j
slf4j-api
1.7.7
org.slf4j
jcl-over-slf4j
1.7.7
runtime
org.apache.logging.log4j
log4j-slf4j-impl
2.9.1
org.apache.logging.log4j
log4j-api
2.9.1
org.apache.logging.log4j
log4j-core
2.9.1
org.apache.logging.log4j
log4j-web
2.9.1
runtime
com.lmax
disruptor
3.2.0
hibedate01
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
1.8
1.8
UTF-8

2.在resource目录下添加hibernate.cfg.xml(核心配置文件)

2.1. 添加DTD支持

打开Window—>在这里插入图片描述

Location:查找核心配置文件:E:\jars\hiberdate\hibernate-configuration-3.0在这里插入图片描述
Key type:URL

key地址:http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd

在这里插入图片描述
成功DTD支持
在这里插入图片描述

2.2. 添加Hibernate的配置
2.2.1 数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
2.2.2 调试相关(show_sql|format_sql)

在这里插入图片描述

hiberdate配置源码:

root
123
jdbc:mysql://localhost:3306/hjj?useUnicode=true&characterEncoding=UTF-8&useSSL=false
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
true
true

3 在开发阶段再创建实体类和实体映射文件(*.hbm.xml)

实体必须实现Serializable接口   User  User.bhm.xml

打开Window—>在这里插入图片描述

Location:查找实体映射文件E:\jars\hiberdate\hibernate-mapping-3.0
key type:选择URL
key:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

在这里插入图片描述

小结:hibernate.cfg.xml(1)/*.hbm.xml(N)

解释: 项目只能有一个核心文件,但可以有多个实体映射文件
(重点) 实体映射文件一定要加到核心配置文件;

4. hibernate核心API讲解

4.1 Configuration
读取hibernate.cfg.xml

在这里插入图片描述

核心配置文件hiberdate.cfg.xml源码:

root
123
jdbc:mysql://localhost:3306/hjj?useUnicode=true&characterEncoding=UTF-8&useSSL=false
com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
true
true

实体映射文件:xxx.hbm.xm源码l:

4.2 SessionFactory
XxxFactory工厂

#会话

4.3 Session
注1:此session不是jsp里面的session  注2:在会话阶段程序可以通过session接口对数据库执行增-删-改-查(当个对象)操作。
4.3.1 save
4.3.2 get(不讲load方法,在hibernate对象状态时再讲)
4.3.3 delete(先查再删除,保证程序的健壮性)
User u = (User) session.get(User.class,99);      if(null!=u){        session.delete(u);//比如id=99不存在,直接删除就会报错      }
4.3.4 update
先查再改      局部修改

在这里插入图片描述

4.4 Transaction(自动事务和手动事务讲解)
commit/rollback
4.5 Query(hql一章讲)
查全部/批量修改或删除

5. 如何使用hibernate完成CRUD操作

5.1 CRUD操作步骤
5.1.1 读取配置
5.1.2 创建SessionFactory
5.1.3 打开Session
5.1.4 开启事务
5.1.5 CURD
5.1.6 提交事务/回滚事务
5.1.7 关闭Session
5.2 注意事项
5.2.1 hibernate默认使用的是手动事务,因此必须显示的开启和提交事务
5.2.2 删除操作时,必须先查再删

6. 工具类SessionFactoryUtil

结果:UserDao源码:

package com.zking.text.dao;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import com.zking.text.entity.User;public class UserDao {//新增public static void main(String[] args) throws Exception {	User user = new User();//实体类	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");	Date d = sdf.parse("2020-4-2");	java.sql.Date birthday = new java.sql.Date(d.getTime());	user.setId(3);	user.setUserName("zzz");	user.setUserPwd("9888");	user.setRealName("王五2");		user.setSex("女");	user.setBirthday(birthday);	user.setRemark("abcd");		//1.读取核心配置文件	Configuration configuration = new Configuration();	configuration.configure("hibernate.cfg.xml");		//2.创建会话工厂	SessionFactory sessionFactory = configuration.buildSessionFactory();			//3.创建会话	Session session = sessionFactory.openSession();		//4.开启事务	Transaction transaction = session.beginTransaction();		//5.CRUD	session.save(user);//添加		User u = session.get(User.class, user.getId());//查询单个	if(null!=u) {		u.setUserName(user.getUserName());		u.setUserPwd(user.getUserName());		u.setRealName(user.getRealName());		u.setSex(user.getSex());		u.setRemark(user.getRemark());		session.update(u);//修改		session.delete(u);//删除	}	System.out.println(u);		//6.提交或回滚事务	transaction.commit();		//7.关闭会话	session.close();}}

6. OID属性

与数据库主键列映射的属性 普通标签和id标签做了区分

SessionFactory对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个Configuraion的实例来创建

Session对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个Session对象 才会获取一个JDBC的Connection(或一个Datasource) 对象,因此假若不使用的时候它不消费任何资源。

工具包:hibernate-configuration-3.0.dtd源码:

工具包:hibernate-mapping-3.0.dtd源码:

#### hibernate-configuration-3.0.dtd源码:

输出结果的hibernate:在这里插入图片描述

转载地址:https://blog.csdn.net/weixin_45067120/article/details/105254466 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:如何配置Maven项目
下一篇:Vim编辑器(理解,教程)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月18日 14时13分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章