hibernate
lzt928786458
这个作者很懒,什么都没留下…
展开
-
hibernate的两种session获取方式
Hibernate有两种方式获得session,分别是:openSession和getCurrentSession他们的区别在于获取的是否是同一个session对象openSession每次都会得到一个新的Session对象getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象事务提交的必要性openSession只有在增加,删除,修改的时候需要事务,查询时不需要的getCurrentSession是所有操作原创 2020-06-29 15:34:28 · 273 阅读 · 1 评论 -
hibernate缓存机制
hibernate默认是开启一级缓存的,一级缓存存放在session上。首先我们都知道在使用hibernate的时候,要创建SessionFactory和session,那么缓存,也是在这上面进行的。首先是如下代码,测试session上面的缓存结果,在执行c2的时候,不会再有sql语句,这代表着实际上session是有缓存的(这很正常,因为不能查完就丢,毕竟之后可能会用到),这是1级缓存SessionFactory sf = new Configuration().configure().buildS原创 2020-06-29 15:21:34 · 88 阅读 · 0 评论 -
hibernate级联delete、delete-orhpan和all-delete-orphan区别
级联一共有四种类型:all:所有操作都执行级联操作;none:所有操作都不执行级联操作;delete:删除时执行级联操作;save-update:保存和更新时执行级联操作;级联通常用在one-many和many-to-many上,几乎不用在many-to-one上。现在5.4我还看到了delete_orphan,all-delete-orphan在下面说一下(想要复现的可以参考原网址how2j教程)在这里,我设置category和product为one-to-many的关系,category原创 2020-06-29 10:52:46 · 417 阅读 · 0 评论 -
hibernate中自动创建表失败和更改数据库引擎解决办法
当时在照着博客学习的时候遇到了一些问题原网址在这里:how2j hibernate多对一在执行这个多对一示例程序之前,会用到hibernate的自动创建表的功能,主要出问题是在这里。应该是我使用的hibernate版本比较高,所以遇到了这种问题。1.第一个问题首先,数据库表根本无法自动更新,报错无法执行建表语句解决方法:修改配置文件hibernate.cfg.xml把 <property name="dialect">org.hibernate.dialect.MySQLDiale原创 2020-06-26 10:55:13 · 217 阅读 · 0 评论 -
实体类在Hibernate中的状态
实体类对象在Hibernate中有3种状态分别是瞬时,持久和脱管瞬时 指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了持久 指得是一个对象和hibernate发生联系,有对应的session,并且在数据库中有对应的一条记录脱管 指的是一个对象虽然在数据库中有对应的一条记录,但是它所对应的session已经关闭了刚创建完对象,在数据库中还没有对应的记录,这时候是瞬时的;创建完对象,并且写入到数据库中,该对象也和Session之间产生了联系,原创 2020-06-24 16:35:02 · 84 阅读 · 0 评论 -
hibernate增删改查
首先,所有的操作都是在打开session之后进行的,所以我后面给出的增删改查代码块都应该放在session开启之后,提交之前,在注释的位置 SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session s = sf.openSession(); s.beginTransaction(); //在这里 s.getTransaction().co原创 2020-06-24 16:34:26 · 1315 阅读 · 0 评论 -
使用HQL搜索时出现Legacy-style query parameters (`?`) are no longer supported的解决办法
在新版本的hibernate中,对原来的HQL格式Legacy-style query不再支持,现在网上很多的教程中,还在使用这种直接用?的语句,要将之修改为JPA-style的HQL,即后面?带上数字的HQL写法。参照着这篇博客解决的https://blog.csdn.net/Z_Dalao/article/details/84891149...原创 2020-06-24 16:21:28 · 697 阅读 · 0 评论 -
idea配置HIBERNATE和小demo
hibernate不同版本之间jar包存在兼容性问题,如果需要导入的是你下载的一套jar包。在idea中创建hibernate比较简单,首先创建项目file->new project ->java中勾选hibernate,然后直接选择hibernate lib(如果你之前下载过)或者直接下载(如果之前你没下过),然后idea会自动下载这个版本的hibernate所有包然后创建项目即可,项目结构如下:再在file->project structure->libraries中导原创 2020-06-22 16:30:56 · 248 阅读 · 0 评论