问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何学习Hibernate

发布网友 发布时间:2022-05-01 16:07

我来回答

2个回答

懂视网 时间:2022-05-01 20:29

static void main(String[] args) { //获取Session对象 Session s = HibernateSessionFactory.getSession(); //开启事务 // s.beginTransaction(); //数据库数据添加 // s.save(new DateTxt(new Date(), "ss")); //提交事务 // DateTxt data = (DateTxt)s.get(DateTxt.class, 50); // data.setTime(new Date());
     //修改数据 // s.update(data); //删除信息 // s.delete(data); // s.getTransaction().commit(); //关闭事务 // s.close(); }

通过代码已经很清晰的看到如何操作了,下面总结一下

beginTransaction()开启事务

getTransaction().commit()提交事务

getTransaction().rollback()回滚事务

save(对象)保存数据

update(对象)修改数据

delete(类名.class,主键ID)删除数据

2.查询。

查询方法比较多,就比进行太多代码演示了。

     //基础查询,其他查询都是在此基础上进行扩展
 //查询语句createQuery(HQL查询语句) from + 表对应的类名 返回Query对象
 //list(): 返回一个List集合
 String hql = "from DateTxt";
 List<DateTxt> lists = s.createQuery(hql).list();
 for (DateTxt dateTxt : lists) {
  System.out.println(dateTxt.toString());
 }
 //分页查询
 List<DateTxt> lists2 = s.createQuery("from DateTxt").setFirstResult(0).setMaxResults(2).list();
 for (DateTxt dateTxt : lists2) {
  System.out.println(dateTxt.toString());
 }
 //聚合函数查询,count()查询数据总数类型要使用Long
 Integer max = (Integer) s.createQuery("select min(id) from DateTxt").uniqueResult();
 System.out.println(max);

 

hibernate单表查询总结
* 1.from + 表对应的类名 : 查询所有
* 2.select new 表对应的类(变量1,变量2,。。。) from 表对应的类名:查询给定列的数据
  需要在bean里面给出对应的构造器
* 3.from 类名 where 属性名 = ?:条件查询
  在createQuery()方法后调set*(下标或属性名,value)方法给值
* 4.from 类名 where 属性名 like ?:模糊查询
  在createQuery()方法后调set*(下标或属性名,%value%)方法给值
* 5.from 类名 where 属性名 like =:别名 :通过 别名查询
  在createQuery()方法后调set*(别名,value)方法给值
* 6.在查询语句后调用.uniqueResult()返回单条查询结果
* 7.在查询语句后调用.setFirstResult(第几条数据开始).setMaxResults(查询的最大条数)实现分页查询
* 8.Long max = (Long) s.createQuery("select count(id) from DateTxt").uniqueResult():聚合函数查询,返回数据的总数
* 9.把上面的count换成max/min : 返回最大索引/最小索引
* 10.session.createSQLQuery(原生SQL语句).addEntity(类名.class) : 使用原生sql语句查询
* 11.select 别名 from 类名 as 别名 : 通过别名返回结果集,通常用于多表查询
* 12.session.get(类名.class ,主键ID):通过主键id快速查找单条数据



 

Hibernate学习笔记(一)-->数据库单表操作

标签:str   学习   开始   color   result   基础上   开启   ati   family   

热心网友 时间:2022-05-01 17:37

如何学习Hibernate
作者:robbin 来自:hibernate

  Hibernate入门容易,掌握精通我也不敢自夸。我第一遍看Hibernate文档的时候也觉得很吃力,但不是因为Hibernate难掌握而感到吃力,是因为Hibernate文档处处都是持久层设计的经验和最佳实践。Hibernate文档准确的来说,绝大部分内容都在讲对象的持久层设计,而不是简单的Hibernate使用,使用问题查Java doc就够了。所以学习Hibernate,主要是在学习持久层的设计模式,如果你把Hibernate文档都看完了,还整天只会提那些 Hibernate的配置问题,Hibernate的类调用问题,我觉得这样的人还没有真正的入门,算是白学了。

  我对Hibernate 的那些配置也不是特别纯熟,每次写hbm,都要对照文档一点点的检查;类调用参数也不太记得,写代码也要Java doc随时备查。但是我在学习Hibernate的时候即集中所有精力来理解Hibernate的运行原理,集中精力来掌握持久层设计应该把握的原则和技巧,这些才对我是最重用的东西。毫不夸张的说,学习完Hibernate,我对JDBC的编程也提高了一大截,更不要说对于J2EE架构的持久层的框架设计,基本上是了然于胸了,即使将来换了API,不用Hibernate的,改用JDO,Castor什么的,这些经验一样照用。

  学习Hibernate主要不是在学习Hibernat怎么配置,用工具怎么生成hbm文件,如果你把重点放在这里,基本上等于白学了Hibernate。Hibernate的精华在于无与伦比的灵巧的对象持久层设计,这些持久层设计经验不会因为你不用Hibernate而丧失掉,我自己学习Hibernate,已经明显感觉到对持久层设计能力已经长了很多经验值了,这些经验甚至不光可以用在Java上,用在.net上也是一样。所以Hibernate配置的学习,我只是简单看看,用的时候知道到那里去查就行了,一堆复杂的生成工具我根本就看都不去看,这样算下来,掌握Hibernate的配置,可以用Hibernate来替代JDBC写程序,不过花上3天时间就足够了。我想3天时间对你来说不算很奢侈的学习代价吧。

  为什么我这么强调学习Hibernate的对象持久层设计理念呢?那就看你的理想是想一辈子做一个程序员呢?还是想向更高的方向发展呢?从纯做技术的角度来说,职业发展的最高点是“系统架构师”,Bill Gates不是还叫做微软的首席系统架构师吗?System Architect职位需要的是你的学习和领悟能力,如果你不能把学习Hibernate得到的设计经验运用到其它地方,那么你是失败的,也没有资格做 System Architect。

  不管JDO也好,Hibernate也好,TopLink也好,CocoBase也好,还是 Castor,还是什么Torque,OJB,软件的使用和配置方法可以各异,但本质上都是ORM,都是对JDBC的对象持久层封装,所以万变不离其宗,如果你完整的学习和掌握Hibernate花了1个月的时间,那么你再学习OJB的时间不应该超过1个星期,因为你已经把对象持久层设计都了然于胸了,你需要的只是熟悉一下OJB的API和配置罢了,至于怎么运用OJB进行持久层的开发你早就已经熟悉了。

  所以当你掌握了两种以上的ORM,你应该能够不拘于使用的ORM软件的*,设计出适合于你的项目的持久层来,这才是System Architect的水准。用金庸小说来打个比方来说吧,张无忌学太极剑,只记剑意,不记剑招,这才是真正的高手,而低手就只会去学习剑招,而不去领会剑招背后蕴含的剑意,所以一辈子都是低手,永远不能真正学会太极剑。所以周颠看到张三丰第二次演示太极剑,招式完全不同就以为是另一套东西,其实本质上都一样。学习Hibernate也不要舍本逐末的去学各种五花八门的工具,重点掌握它的对象持久层设计理念。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? K1518次列车在甘旗卡站停车吗? 甘旗卡生源地贷款办理是什么时候 求四驱兄弟歌词发音 朋友答应去火车站接我,可他迟到了,想发个即幽默又谴责他的朋友圈该怎么说 急求新四驱兄弟的主题曲 歌词是那个快快快 冲冲冲。。。 快递到哪了?什么时候能到甘旗卡? 甘旗卡什么地方招服务员 四驱兄弟主题曲(抬头望望天)是什么 通辽四中什么时候招生考试 想去通辽四中的话在哪报名?去哪考试啊 ?甘旗卡的学生 《四驱兄弟》开头曲的歌名是什么? 大明湖到甘旗卡需要报备吗 四驱兄弟 片尾曲,抬头望望天…… 美商捷斯是网络传销吗 动画片四驱兄弟片头曲叫什么名字? 四驱兄弟一部主题曲 甘旗卡打工5000元工资有吗? 《四驱兄弟》的片头曲的名字是? 甘旗卡 谁家给电脑做系统好啊 细说 在哪 动画片《四驱兄弟》主题曲中文版叫什么名字? 甘旗卡的档案应该放在哪里,有人材交流中心吗 怎样包书皮好看 美观、节省纸的包书皮方法 怎么用纸来包书皮?求图片。 在 endnote x6中打开的caj 格式的文章,修改不能保存,从新打开后还是原来一样,怎么办啊 保存了一批论文,如何批量获得它们的出版社(caj格式的) 怎样把endnote library 中全文导出...急用,谢谢! 白色衣服起球怎么办?? 临沂羊杂牛杂市场在哪里?具体位置 济南市有哪此牛羊肉批发市场? 请问羊杂哪里有批发的? 哪里批发羊杂最便宜。。。谁能帮帮我 生羊杂批发市场 新鲜羊肉多少钱一斤 21天辟谷减肥成功,有什么好办法?? 要怎么练腹肌 怎么才能够练出腹肌! 怎么高效练腹肌? Hibernate异常 qq邮箱是电子邮件地比吗? QQ邮箱可不可以为电子邮件地址