- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hibernate汇总整理
Hibernate汇总整理
单表(多表)的增/删/改/查(ID查询/查询所有)/一对多/多对一/多对多/级联/延迟加载/控制反转/
Hibernate搭建一般步骤:
下载jar包:
创建实体类对象:
配置Hibernate配置文件:hibernate.cfg.xml文件(链接数据库,关联实体类与数据库表映射配置文件):
链接数据库信息配置:方言、驱动、url、用户名、密码:
是否显示执行的sql语句:
关联实体类与数据库表的关系映射文件:
配置类与表映射的文件:类名.hbm.xml文件,与实体类一起放在model层中(配置实体类与数据库表映射关系信息):实体类包名、实体类与数据库表对应的关系、实体类中属性与数据库表中字段对应关系(如果数据库字段名与实体类属性名一样,可以省略column属性)
调用hibernate的API,创建测试类,进行测试;
单表的增、删、改、查写一般方法:(一般创建一个生成session对象的工具类方法,增、删、改要通过session调用beginTransaction()方法开启事务,先通过 session调用增、删、改的方法,然后在通过事务提交信息)
工具类生成session对象的方法:
增:通过session调用save(Object object)方法,然后事务提交,最后关闭session:(注意:增加后会将该主键ID返回到该对象中)
删:先通过session调用get()通过ID查询方法返回一个对象,然后再通过session调用delete(Object object)方法,然后通过事务提交,最后关闭session即可;
改:通过session调用update(Object object)方法,然后通过事务提交,最后关闭session即可;(注意:对象中为空的属性在数据库中对应字段值便修改为null了)
通过ID查询:通过session调用get()方法返回一个对象,然后关闭session即可;
查询所有:先通过session调用createQuery(“from 实体类对象名”)方法返回一个Query类型对象,通过返回的对象调用list()方法即可得到查询的结果集合,最后关闭session即可;
增加或修改方法:saveOrUpdate(Object object)方法,如果object对象有id那就执行修改,如果没有id那就执行增加;
通过ID查询的两种方法及其区别:
通过ID查询的方法有:session.get()和session.load()两种方法;
区别:如果数据库中没有该ID,那么get()方法会返回一个null对象,load()方法会在你使用该对象的时候抛出一个异常;(因此:强烈推荐使用get()方法来通过ID查询一条记录)
Hibernate在Java中存在的3种状态:
Hibernate在Java中存在的状态有:瞬时状态、持久状态、游离状态;
三种状态的理解:
三种状态都是相对于数据库而言的:(跟数据库从来都没有关系的就是瞬时状态;跟数据库有关系的就是持久状态;跟数据库之前有关系,后来又没有关系了那现在就是游离状态)
瞬时状态:就是在java中通过new创建一个新的对象,并且该对象的信息并没有写入数据库;
持久状态:就是通过session调用方法将对象的信息写入了数据库中,对象中信息与数据库有关系了,那就是持久状态;
游离状态:就是对象之前跟数据库有关系,事务提交,写入数据库,session关闭后,该对象跟数据库就没有关系了,就变成了游离状态了;
Hibernate的优缺点及与Mybatis的区别:
Hibernate的优点:
(对面向对象性能支持良好;
(可移植性好;
Hibernate的缺点:
(需要使用数据库的特定优化机制时不适合用Hibernate;
(需要对数据进行大规模批量处理的时候不适合用Hibernate;
Hibernate与Mybatis的区别:
(相对于Mybatis而言,Hibernate的ORM(Object Relation Mapping)实现更加完善;
(面向对象,开发者不必关注SQL的生成;
(使用自由度不如直接使用SQL的Mybatis灵活;
Map对象转换为Set对象:对于Map对象不方便进行遍历,可以先将Map对象转换为Set对象,然后通过foreach遍历Set对象即可,具体操作如下:
通过Map对象调用entrySet()方法即可返回一个EntryString,Object类型的集合Set,然后通过遍历Set集合来实现对Map的遍历;
HQL的基本常用查询语句:
select:select 实体类别名.对象的属性名(如果只查询一张表实体类可以没有别名,如果查询多张表每个实体类最好是各有一个别名){多用于显示某几列,不查询显示所有的
文档评论(0)