Hibernate初学者容易遇到的问题 旧城等待, 2022-05-25 23:18 259阅读 0赞 一、首先介绍一下jar包 在这里面进行对hibernate的需要的jar的介绍 1.hibernate3.jar Hibernate的核心类库 2.antlr-2.7.6.jar 语言转换工具,Hibernate利用它来实现HQL到SQL的转换 antlr:Another Tool for Language Recognition 另一个语言识别工具 ,总之就是关于语言,对语言的操作的 3.commons-collections-3.1.jar collections Apache的工具集,用来增强Java对集合的处理能力 collection类是一个最基本的集合接口,大家熟知的List和Set都是都是它的子接口 4.dom4j-1.6.1.jar 一个JavaXML的API,类似于JDOM,用来读写XML JDOM是一个开源项目,它是基于树形结构的,利用纯Java技术对XML文档进行实现解析、生成、序列化以及多种操作,简单来说就是实现对xml的读、写、操作 5.javassist-3.12.0.GA.jar 一个开源的分析、编译和创建字节码的类库 6.jta-1.1.jar 标准的Java事务(跨数据库)处理接口 jta:即Java Transaction API 7.hibernate-jpa-2.0-api-1.0.1.Final.jar JPA接口开发包 jap:Java Persistence API Java持久层API /\*关于日志的jar包\*/ 8、slf4j-api-1.6.1.jar 只是一个接口,用于整合log4j log4j-1.2.17.jar Loh4j日志文件核心JAR slf4j-log4j12-1.7.12.jar Hibernate使用的一个日志系统 9、/\*hibernate自带的日志jar包\*/ jboss-logging-3.1.0.GA.jar 以上有两种日志的jar包,我认为hibernate默认使用的是自带的日志,当然如果想用log4j的日志可以试着这样做:首先添加log4j.properties文件,还有相关jar包,然后就是一下两种办法可以实现 1.设置系统属性:jboss.logging.provider=slf4j 2.就是将hibernate的jboss-logging.xxxjar包换成3.2版本以上的,目前hibernate4.3.10自带的jboss-logging还是3.1的 我认为hibernate日志加载顺序应该是: 1.JBoss的自己的日志实现 2.log4j的2.x的 3.log4j的1.x的 4.SLF4J - 5.java.util.logging中 二、hibernate执行流程 (1)初始化Hibernate,构建Configuration实例,这一步就是将hibernate核心配置文件和映射文件加载到Configuration对象中 (2)创建SessionFactory实例。通过Configuration对象读取到的配置文件信息创建SessionFactory,并将Configuration对象中所有的配置文件信息存入到 SessionFactory内存中。 (3)创建Session实例,建立 数据库连接。Session是通过SessionFactory打开的,创建一个Session相当于建立一个新的数据库连接 (4)创建Transaction实例,开启一个事务,Transaction用于事务管理,一个Transaction对象对应的事务可以包含多个操作,在Hibernate中执行增删改操作时,必须创建Transaction对象。事务默认是关闭的,如果进行查找操作不需要开启事务 (5)利用Session接口通过的各种方法进行持久化操作 (6)提交事务。对实体对象持久化操作之后,必须提交操作 (7)关不Session,断开与数据库的连接 下面,我们用一个实例来描述上方的步骤 (1)Configuration configuration = new Configuration().configure(); (2)SessionFactory sessionFactory = configuration.buildSessionFactory(); (3)Session session= sessionFactory.openSession(); (4)Transaction transaction = seession.beginTransaction(); (5) User user = new User(); user.setUsername("张三"); user.setPassword("123456"); session.save(user); (6)transaction.commit(); (7)session.close(); sessionFactory.close(); 上面的这个保存操作每一步和上面的Hibernate执行流程是一一对应的 三、简单说一下,懒加载(lazy属性) 1、 在<many-to-many>中lazy有三种取值:false(立即加载)、proxy(使用延迟加载)、no-proxy(无代理延迟加载)。默认是proxy 2、 <class> 中的lazy有两种取值 false(立即加载)、true(延迟加载)。 默认是true 3、<set> 中的lazy有三种方式false(立即加载)、true(延迟加载)、extra(增强延迟加载)。默认是true lazy作用:关联延迟加载,记住是关联、关联、关联,重要的话说三遍,为什么是很重要这个等下再说,因为和下面的内容有联系 四、简单说一下get()和load()方法 作用都是相同的,就是通过传入两个参数 ![70][] ![70 1][] 参数类型都是相同的,相信稍微有点基础的朋友都会知道怎么传参 不同点: 当想取得的的数据在数据库中不存在时,get会返回null,load会返回一个异常 然后就是数据存在时,load是什么时候用什么发出请求,get是不论是否有需要都要发送请求 五、将延迟加载和get()、load()方法结合起来 <table> <tbody> <tr> <td> </td> <td>false</td> <td>true</td> </tr> <tr> <td>get() </td> <td>立即查询,并且是一次性加载完,包括关联对象</td> <td>立即查询,用什么加载什么,如果用不到关联对象,就不会执行查询关联度向的操作</td> </tr> <tr> <td>load()</td> <td><span style="font-family:Arial, Verdana, sans-serif;font-size:14px;text-align:left;background-color:rgb(247,247,247);">什么时候用什么时候查询,并且是一次性加载完,包括关联对象</span></td> <td><span style="font-family:Arial, Verdana, sans-serif;font-size:14px;text-align:left;background-color:rgb(247,247,247);">什么时候用什么时候查询,用什么加载什么,如果用不到关联对象,就不会执行查询关联度向的操作</span></td> </tr> </tbody> </table> 注:至于例子就不和大家分享了,我也是完全测试了一遍才确定了,感觉如果例子贴出来是害了大家 [70]: /images/20220526/6ae3a8db2841426988d08313e3b994b8.png [70 1]: /images/20220526/1e7c025af7e0481eb32c08ecfb273162.png
相关 Java初学者常遇到的环境配置问题 作为Java初学者,经常会遇到一些关于环境配置的问题。这里列举几个常见的问题以及解决方法: 1. **Java安装不完整**:如果你的Java版本不是系统默认,可能会导致系统 布满荆棘的人生/ 2024年09月12日 08:45/ 0 赞/ 18 阅读
相关 python初学者经常容易出现的代码错误 前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:彭博 PS:如有需要Python学 野性酷女/ 2023年02月14日 10:38/ 0 赞/ 52 阅读
相关 charles安装与使用以及平时容易遇到的问题 1.1Charles的安装: 以Charles4.1版本为例,下载地址:http://baoku.360.cn/soft/show/appid/100821安装步骤为 深藏阁楼爱情的钟/ 2022年12月30日 01:28/ 0 赞/ 176 阅读
相关 MySQL 初学者可能会遇到的问题 MySQL 向含有自增长列的表中插入记录注意: Insert into 表名 values (值); 省略了列则需要随意填写一个符合增长列类型的数据即可, 淩亂°似流年/ 2022年08月27日 13:57/ 0 赞/ 262 阅读
相关 Hibernate入门遇到的一些问题 1. 配置文件位置 使用Configuration config = new Configuration().configure();读取Hibernate的配置文件,文件的 野性酷女/ 2022年08月06日 05:24/ 0 赞/ 227 阅读
相关 Hibernate初学者容易遇到的问题 一、首先介绍一下jar包 在这里面进行对hibernate的需要的jar的介绍 1.hibernate3.jar Hibernate的核心类库 2.ant 旧城等待,/ 2022年05月25日 23:18/ 0 赞/ 260 阅读
相关 Spring初学者容易踩到的雷区 1、在new出来的对象中,Spring无法自动注入对象 直接上代码 private UserDao userDao; @Autowire 分手后的思念是犯贱/ 2022年05月22日 10:49/ 0 赞/ 168 阅读
相关 初学者使用hibernate注意的小问题 废话不多说,直接来干货 1.org.hibernate.hql.ast.QuerySyntaxException: user is not mapped \[fro 绝地灬酷狼/ 2022年04月15日 02:57/ 0 赞/ 189 阅读
相关 Hibernate复习遇到的问题 问题:Exception in thread “main” org.hibernate.HibernateException: ‘hibernate.dialect’ must 柔光的暖阳◎/ 2022年03月28日 02:18/ 0 赞/ 251 阅读
还没有评论,来说两句吧...