• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

1.2 hibernate示例

开发技术 开发技术 4小时前 2次浏览

Hibernate入门这一篇就够了

 
什么是Hibernate框架?
Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象!
 
为什么要使用Hibernate?
既然Hibernate是关于Java对象和关系数据库之间的联系的话,也就是我们MVC中的数据持久层->在编写程序中的DAO层…
 
也就是说:java对象和数据表中的列存在映射关系!如果程序能够自动生成SQL语句就好了….那么Hibernate就实现了这个功能!
简单来说:我们使用Hibernate框架就不用我们写很多繁琐的SQL语句,从而简化我们的开发
 
ORM概述
在介绍Hibernate的时候,说了Hibernate是一种ORM的框架。那什么是ORM呢?ORM是一种思想
 
O代表的是Objcet
R代表的是Relative
M代表的是Mapping
ORM->对象关系映射….ORM关注是对象与数据库中的列的关系
1.2 hibernate示例

 

 

 
针对Transaction transaction = session.getTransaction(); 报错
jdk换成1.8
 
hibernate.hbm.xml是对象-表的映射文件,格式网上都有,放在类文件下
配置自增长的字段时类型必须为int , 如id的配置
 
hibernate.cfg.xml是主配置文件,放在src目录下,一般在官网下下载的hibernate中可以搜索到,如
H:下载hibernate-search-5.8.0.Finalprojectintegrationtestosgikaraf-itsrctestresourceshibernate.cfg.xml
 
 
console 报错
NoClassDefFoundError: org/jboss/logging/BasicLogger
添加jboss-logging.xxx.jar,
将所需jar包加入lib中后刷新项目即可,无需build path重复添加
 
NoClassDefFoundError: javax/transaction/SystemException
Java Transaction API java事务管理的jar包
添加jta.jar
 
NoClassDefFoundError: org/hibernate/annotations/common/reflection/ClassLoaderDelegate
添加hibernate-commons-annotations-xxx.jar
 
NoClassDefFoundError: com/fasterxml/classmate/TypeResolver
添加classmate.jar
 
综上,项目所需jar包12个
hibernate3.jar核心 + required 必须引入的(9个) + jpa 目录 + 数据库驱动包
1.2 hibernate示例

 

 

 
 
console报错
Error executing DDL via JDBC Statement
检查数据库方言
hibernate.cfg.xml中
<propert name=“hibernate.dialect”>org.hibernate.dialect.Oracle10gDialect</property>
 
hibernate每次都删除表重新生成
hibernate.cfg.xml中
<property name=“hibernate.hbm2ddl.auto”>create</property>
将create改为update
其他:create-drop 建完表程序运行结束后又删除
create 每次重新启动是删除表再建
validate: 检查,若果前后一样就运行,否则报错
update:检查,有更新就更新表结构
 
consol报错
Schema-validation: missing table [person]
改为update
consol报错
Error executing DDL via JDBC Statement
注释<!– <property name=”hibernate.hbm2ddl.auto”>update</property> –>
 
做法,第一次用create 后面注释掉
 
 
重要方法
  • 如果指定参数,那么加载参数的路径配置文件
  • 如果不指定参数,默认加载src/目录下的hibernate.cfg.xml
Configuration configuration = new Configuration();
 
SessionFactory–>Session的工厂,也可以说代表了hibernate.cfg.xml这个文件
SessionFactory factory = configuration.buildSessionFactory();
 
Session
Session是Hibernate最重要的对象,Session维护了一个连接(Connection),只要使用Hibernate操作数据库,都需要用到Session对象
 

保存 更新操作

  • session.save(obj); 【保存一个对象】
  • session.update(obj); 【更新一个对象】
  • session.saveOrUpdate(obj); 【保存或者更新的方法】
    • 没有设置主键,执行保存;
    • 有设置主键,执行更新操作;
    • 如果设置主键不存在报错!

主键查询

通过主键来查询数据库的记录,从而返回一个JavaBean对象
  • session.get(javaBean.class, int id); 【传入对应的class和id就可以查询】
  • session.load(javaBean.class, int id); 【支持懒加载】
 
hql查询
HQL:hibernate query language 即hibernate提供的面向对象的查询语言
查询的是对象以及对象的属性【它查询的是对象以及属性,因此是区分大小写的!】
 
console报错
person is not mapped [FROM person]
 
FROM 后跟的是对象,而不是表名,改为FROM User
 
开启事务,返回的是一个事务对象….Hibernate规定所有的数据库操作都必须在事务环境下进行,否则报错
 
1.2 hibernate示例

 

 

 
 
 
完整实例:
 
1.2 hibernate示例
 
 
 
 
 
 
 

程序员灯塔
转载请注明原文链接:1.2 hibernate示例
喜欢 (0)