初始Hibernate框架技术

hibernate:

定义:ORM:Object Relational Mapping 对象 关系 映射

使用hibernate时几个必要的:

  1、实体类
  2、映射文件(类  -数据库表,属性-字段)【实体类名.hbm.xml】
  3、配置文件:数据库连接信息(两个配置:hibernate.cfg.xml(数据库配置文件)和实体类名.hbm.xml(映射配置文件))

  4、必要架包

  • hibernate(主框架)
  • ojdbc                       jdbc
  • jta                          允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数  据:针对数据读取
  • commons-collections 各种集合类和集合工具类封装
  • dom4j                    xml解析
  • javassist                  分析、编辑和创建Java字节码的类库:针对字节码的
  • slf4j-api               记录hibernate的日志接口
  • slf4j-nop               、、

其他笔记:

  在代码中都会有注释



hibernate.cfg.xml(数据库配置文件):

 1 <!DOCTYPE hibernate-configuration PUBLIC
 2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 4
 5 <hibernate-configuration>
 6     <session-factory>
 7
 8         <!-- 指定oracle对应得dialect -->
 9         <property name="dialect">
10             org.hibernate.dialect.Oracle10gDialect
11         </property>
12         <!-- 数据库jdbc驱动 -->
13         <property name="connection.driver_class">
14             oracle.jdbc.driver.OracleDriver
15         </property>
16
17         <!-- 数据库url -->
18         <property name="connection.url">
19             jdbc:oracle:thin:@localhost:1521:XE
20         </property>
21         <!-- 用户名 -->
22         <property name="connection.username">user_admin</property>
23         <!-- 用户密码 -->
24         <property name="connection.password">abc123</property>
25
26         <!-- session范围和上下文 -->
27         <property name="current_session_context_class">thread</property>
28         <!-- 是否在运行期间生成的SQL输出到日志以供调试 -->
29         <property name="show_sql">true</property>
30         <!-- 是否格式化sql -->
31         <property name="format_sql">true</property>
32         <!-- 映射 -->
33         <mapping resource="cn/cy/Hibernate/entity/Dept.hbm.xml" />
34     </session-factory>
35 </hibernate-configuration>

hibernate.cfg.xml

实体类名.hbm.xml(映射配置文件):

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5
 6
 7 <hibernate-mapping>
 8     <!-- 与关键字冲突   ”~~“解决 -->
 9     <class name="cn.cy.Hibernate.entity.Dept" table="dept">
10         <!-- 当数据库里面的列明与java属性一致时,我们可以省略colnumn -->
11         <id name="deptno" column="deptno">
12             <generator class="sequence">
13                                       <!--索引-->
14                 <param name="sequence">seq_index</param>
15             </generator>
16         </id>
17         <property name="deptname" column="deptname" type="java.lang.String" />
18         <property name="loc" column="loc" type="java.lang.String"/>
19     </class>
20 </hibernate-mapping>
21     

映射配置

实体类:

 1 package cn.cy.Hibernate.entity;
 2
 3 import java.io.Serializable;
 4
 5 public class Dept implements Serializable{
 6     //属性
 7     private int deptno;
 8     private String deptname;
 9     private String loc;
10     //构造方法
11     public Dept(){
12
13
14     }
15     //
16     public int getDeptno() {
17         return deptno;
18     }
19
20     public void setDeptno(int deptno) {
21         this.deptno = deptno;
22     }
23
24     public String getDeptname() {
25         return deptname;
26     }
27
28     public void setDeptname(String deptname) {
29         this.deptname = deptname;
30     }
31
32     public String getLoc() {
33         return loc;
34     }
35
36     public void setLoc(String loc) {
37         this.loc = loc;
38     }
39
40
41 }

实体类

测试类:

  使用hibernate的几个步骤:

 1 package cn.cy.Hibernate.Test;
 2
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7
 8 import cn.cy.Hibernate.entity.Dept;
 9
10
11 /**
12  * 测试类
13  * @author Administrator
14  *
15  */
16 public class Test {
17     public static void main(String [] args){
18         /**
19          * 测试方法
20          */
21         if(addDept()){
22             System.out.println("保存成功");
23         }
24
25     }
26     /**
27                   *测试hibernate框架的测试类
28                   **/
29     public static boolean addDept(){
30         boolean flag=false;
31         Configuration conf=null;
32         SessionFactory factory=null;
33         Session session=null;
34         Transaction trans=null;
35         try {
36             //读取配置文件
37             conf=new Configuration().configure();
38             //创建sessionfactory
39             factory=conf.buildSessionFactory();
40             //打开会话
41             session=factory.openSession();
42             //开启事务
43             trans=session.beginTransaction();
44             Dept dept=new Dept();
45             //当设置了gennerator为sequence时,不给参数是以指定sequence填值
46             dept.setDeptno(200);
47             dept.setDeptname("开发部");
48             dept.setLoc("成都");
49             //持久化
50             //session.save(dept);
51             //session.delete(dept);
52             //Dept dp=(Dept)session.get(Dept.class, 1);//没有数据,返回空值
53             //System.out.println(dp.getDeptname());
54             Dept dp=(Dept)session.load(Dept.class, 1);//没有数据,报异常
55             System.out.println(".....");
56             System.out.println(dp.getDeptname());
57
58
59
60             //提交事务
61             trans.commit();
62
63             flag=true;
64         } catch (Exception e) {
65             e.printStackTrace();
66             trans.rollback();
67         }finally{
68             if(session!=null){
69                 session.close();
70
71             }
72         }
73
74
75         return flag;
76
77     }
78 }
79         

在测试中遇到的exception:
  

  

  因为在上课时忘记将错误信息保存下来,所以在这里不做详细错误描述:

  配置文件一定严格书写,地址一定准确!

  总之如果按照上述的配置过程配置,出现错误时:

  • 方法alt不出来,检查架包是否build
  • 运行代码后,如果提示sequence不存在的,检查param节点;
  • 如果是其他与数据库相关的,检查自己数据库的约束等等
  • 以上是我遇到的错误,其他的错误暂时没遇到!

  

时间: 2024-10-12 08:23:26

初始Hibernate框架技术的相关文章

当项目需要使用Hibernate框架技术时,对项目进行的配置

1.在需要使用Hibernate框架技术的项目上单击鼠标右键,在弹出的菜单中选择MyEclipse-->Add Hibernate Capabilities,打开Add Hibernate Capabilities对话框 2.在Hibernate Specification后面的单选按钮中选择你需要使用的Hibernate框架的版本,我这里使用的是Hibernate 3.1版本,然后点击Next>按钮进行下一步操作: 3.点击Next>进行下一步操作: 4.在下图中的DB Driver:

j2ee开发之hibernate框架学习笔记

hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换存在着转换问题->orm,对象和关系的一种映射 3.框架:解决一种问题的方案集合! 4..配置文件 Xxx.cfg.xml  主配置文件 xxx.hbm.xml映射文件: 映射基础 普通属性 主键 集合属性 关联关系:一对多  多对一 多对多  一对一 继承结构 5.其他特性:数据库连接池  懒加载

深入浅出Struts2+Spring+Hibernate框架

一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司节省了不少的人力成本. 为什么使用Struts2? struts2实现了视图与业务应用逻辑的解耦(软件工程的高内聚,低耦合原则). 在Model 1时代,开发web项目我们都是在JSP里写入处理业务逻辑的JAVA代码,尤其像涉及到数据库和页面form表单数据之间交互的时候,每次都要写连接.查询.增加

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

JEESZ分布式框架--技术介绍文档

摘要: 1.Eclipse IDE:采用Maven项目管理,模块化.     2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表.一对多.树结构.生成后的代码如果不需要注意美观程度,生成后即可用. Rest服务,Redis,Spring,SpringMVC+Mybatis,Dubbo+Zookeeper,Java分布式架构 分布式.微服务.云架构,Spring,SpringMVC,Spring MVC+Mybatis,Dubbo+Zookeeper,Re

Hibernate框架

SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,    基于持久层的框架(数据访问层使用)! Spring,   创建对象处理对象的依赖关系以及框架整合! Dao代码,如何编写? 1.操作XML数据 2 使用Jdbc技术 原始的jdbc操作, Connection/Statement/ResultSet 自定义一个持久层框架, 封装了dao的通用方法 DbUtils组件, 轻量级的dao的组件: Hibernate技术  [hibernate最终执行的也是

Struts2,Spring,Hibernate框架的优缺点

Struts2,Spring,Hibernate框架的优缺点 Struts2框架(MVC框架)的优点如下: 1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现:        2)  丰富的标签库,大大提高了开发的效率:        3) Struts2提供丰富的拦截器实现        3) 通过配置文件,就可以掌握整个系统各个部分之间的关系:        4) 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理: Spring框架的优点如下: 1) 

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

Hibernate框架基本使用

时间:2017-1-16 00:36 --什么是Hibernate Hibernate是一个开放源代码的关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思维来操作数据库. Hibernate可以应用在任何使用JDBC的场景,既可以在Java的客户端程序使用,也可以在Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE框架中取代CMP,完成数据持久化的重任. Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数