国外有趣的网站,wordpress 猜你喜欢,开发公司房屋移交物业,重庆在线观看1、什么是SessionFactory#xff1f;什么是Session#xff1f;httpsession和hibernate的session的有什么区别#xff1f;SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理#xff0c;并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactor… 1、什么是SessionFactory什么是Sessionhttpsession和hibernate的session的有什么区别 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的因为一般情况下一个项目通常只需要一个SessionFactory就够当需要操作多个数据库时可以为每个数据库指定一个SessionFactory。----百度百科 在hibernate中的session并不是http中所说的session一般把HttpSession对象称为用户会话。。。而hibernate中的Session呢是用来表示应用程序和数据库的一次交互会话。在这个Session中包含了一般的持久化方法CRUD。而且Session是一个轻量级对象线程不安全通常将每个Session实例和一个数据库事务绑定也就是每执行一个数据库事务都应该先创建一个新的Session实例在使用Session后还需要关闭Session2、n1问题一般而言说n1意思是无论在一对多还是多对一当查询出n条数据之后每条数据会关联的查询1次他的关联对象这就叫做n1。下面是3中解决方案设置ManyToOne的fetch属性值为fetchType.LAZY这种方式解决后后面的n条sql语句按需而发。但是有个弊端就是如果需要级联查询就无法获取级联对象了。设置BatchSize(size5)该注解要加在类上面跟Entity在同一位置这样发出的sql语句减少。这个设置在一定程度上提高了效率。 join fetch , 如 使用from Student s left join fetch s.group g 进行表连接查询此时就发1条SQL语句。 使用QBC查询默认效果与3相同。 1)fetchselect 会另外发出一条语句查询集合 2) 设置 fetchjoin 采用外连接集合的 lazy 失效 3) 这只 fetchsubselect 另外发出一条 select 语句抓取前面查询到的所有的实体对象的关联集合 fetch只对 HQL 查询产生影响其他的则不会 3、Hibernate中的get和load加载有什么区别当我们使用session.load()方法来加载一个对象时此时并不会发出sql语句当前得到的这个对象其实是一个代理对象这个代理对象只保存了实体对象的id值只有当我们要使用这个对象得到其它属性时这个时候才会发出sql语句从数据库中去查询我们的对象。相对于load的延迟加载方式get就直接的多当我们使用session.get()方法来得到一个对象时不管我们 使不使用这个对象此时都会发出sql语句去从数据库中查询出来。 4、脏读和幻读脏读是指当一个事务正在访问数据且对数据做了修改但是还没有提交到数据库。另一个事务查询到这个数据、这个数据就是脏数据依靠这个数据所做的操作就是不正确的、幻读比如第一个事务对数据库的全部行进行了修改同时第二个事务插入一条数据到数据库中这时第一个事务就会发现数据库中有一条记录没有被修改像发生了幻觉一样、 转载于:https://blog.51cto.com/12942149/1932736