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(数据库配置文件):

 <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory> <!-- 指定oracle对应得dialect -->
<property name="dialect">
org.hibernate.dialect.Oracle10gDialect
</property>
<!-- 数据库jdbc驱动 -->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property> <!-- 数据库url -->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:XE
</property>
<!-- 用户名 -->
<property name="connection.username">user_admin</property>
<!-- 用户密码 -->
<property name="connection.password">abc123</property> <!-- session范围和上下文 -->
<property name="current_session_context_class">thread</property>
<!-- 是否在运行期间生成的SQL输出到日志以供调试 -->
<property name="show_sql">true</property>
<!-- 是否格式化sql -->
<property name="format_sql">true</property>
<!-- 映射 -->
<mapping resource="cn/cy/Hibernate/entity/Dept.hbm.xml" />
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

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

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!-- 与关键字冲突 ”~~“解决 -->
<class name="cn.cy.Hibernate.entity.Dept" table="dept">
<!-- 当数据库里面的列明与java属性一致时,我们可以省略colnumn -->
<id name="deptno" column="deptno">
<generator class="sequence">
<!--索引-->
<param name="sequence">seq_index</param>
</generator>
</id>
<property name="deptname" column="deptname" type="java.lang.String" />
<property name="loc" column="loc" type="java.lang.String"/>
</class>
</hibernate-mapping>

映射配置

实体类:

 package cn.cy.Hibernate.entity;

 import java.io.Serializable;

 public class Dept implements Serializable{
//属性
private int deptno;
private String deptname;
private String loc;
//构造方法
public Dept(){ }
//
public int getDeptno() {
return deptno;
} public void setDeptno(int deptno) {
this.deptno = deptno;
} public String getDeptname() {
return deptname;
} public void setDeptname(String deptname) {
this.deptname = deptname;
} public String getLoc() {
return loc;
} public void setLoc(String loc) {
this.loc = loc;
} }

实体类

测试类:

  使用hibernate的几个步骤:

 package cn.cy.Hibernate.Test;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import cn.cy.Hibernate.entity.Dept; /**
* 测试类
* @author Administrator
*
*/
public class Test {
public static void main(String [] args){
/**
* 测试方法
*/
if(addDept()){
System.out.println("保存成功");
} }
/**
*测试hibernate框架的测试类
**/
public static boolean addDept(){
boolean flag=false;
Configuration conf=null;
SessionFactory factory=null;
Session session=null;
Transaction trans=null;
try {
//读取配置文件
conf=new Configuration().configure();
//创建sessionfactory
factory=conf.buildSessionFactory();
//打开会话
session=factory.openSession();
//开启事务
trans=session.beginTransaction();
Dept dept=new Dept();
//当设置了gennerator为sequence时,不给参数是以指定sequence填值
dept.setDeptno(200);
dept.setDeptname("开发部");
dept.setLoc("成都");
//持久化
//session.save(dept);
//session.delete(dept);
//Dept dp=(Dept)session.get(Dept.class, 1);//没有数据,返回空值
//System.out.println(dp.getDeptname());
Dept dp=(Dept)session.load(Dept.class, 1);//没有数据,报异常
System.out.println(".....");
System.out.println(dp.getDeptname()); //提交事务
trans.commit(); flag=true;
} catch (Exception e) {
e.printStackTrace();
trans.rollback();
}finally{
if(session!=null){
session.close(); }
} return flag; }
}

在测试中遇到的exception:
  

  

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

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

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

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

  

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

  1. 使用Hibernate框架技术时,对项目进行的配置

    1.在需要使用Hibernate框架技术的项目上单击鼠标右键,在弹出的菜单中选择MyEclipse-->Add Hibernate Capabilities,打开Add Hibernate Ca ...

  2. 初始Hibernate框架

    首先我们需要先创建一个案例 构建一个Student 的实体类 private String name; private Integer age; private Integer id; 在SRC根目录 ...

  3. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  4. Hibernate 系列 01 - 框架技术 (介绍Hibernate框架的发展由来)

    引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用 ...

  5. Hibernate框架之Criteria查询 和注解(重点☆☆☆☆☆,难点☆☆☆)

    写好一篇博客,不是容易的事.原因是:你要给自己以后看的时候,还能看懂,最重要的是当别人看到你的博客文章的时候,也一样很清楚的明白你自己写的东西.其实这也是一种成就感!! 对于每一个知识点,要有必要的解 ...

  6. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

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

    既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...

  8. 项目总结SpringMVC+hibernate框架 web.xml 分析(2)

    紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...

  9. Hibernate 框架基本知识

    QTP:Quick Test Pressional 1,Hibernate是一个优秀的java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 ...

随机推荐

  1. windows7配置Nginx+php+mysql的详细操作是怎样?

    1.准备安装包等 (1)nginx-1.10.1.zip,下载链接为http://nginx.org/en/download.html .我个人选择了稳定版. (2)php-5.6.25-nts-Wi ...

  2. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

  3. HDU 3652:B-number(数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意:求数位含有13和可以被13整除的数字个数. 思路:记录3种状态: st == 0 表示 从最高位到第 ...

  4. Win7家庭版包“已停止工作”

    在VS2010上依据接口,写了个WiFi共享软件,在Win7旗舰班上正确无误,而在却在Win7家庭版上运行不了,报“已停止工作”错误. 解决方法: 1.下载安装vs2010对应的.Net平台:Micr ...

  5. 收藏本网站兼容火狐IE

    <script type="text/javascript"> function AddFavorite(sURL, sTitle) {try { window.ext ...

  6. miniUI 可编辑datagrid获取值的问题

    <div id="variableGrid" class="mini-datagrid" borderStyle="border-right:0 ...

  7. 最全面的Java多线程用法解析

    1.创建线程 在Java中创建线程有两种方法:使用Thread类和使用Runnable接口.在使用Runnable接口时需要建立一个Thread实例.因此,无论是通过Thread类还是Runnable ...

  8. SIM卡应用-OPN,PLMN,SPN

    SIM卡应用 移动运营商已经将SIM卡用於很多不同的应用,下面列出了其中最主要的应 用∶ ·漫游应用∶确保手机可以在漫游之後选择缺省的运营商网络.一个SIM应用是可以在手机漫游到某个合作夥伴运营商网络 ...

  9. 最简单的C/S程序——让服务器来做加法

    还在写“Hello world!”式的单机程序吗?还在各种拖控件吗?是否自己都觉得有点low呢?来个质的飞跃吧!看看怎么让服务器帮咱做加法! 所谓C/S程序就是Client/Server程序,自然既包 ...

  10. Ombrophobic Bovines 分类: POJ 图论 最短路 查找 2015-08-10 20:32 2人阅读 评论(0) 收藏

    Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16539 Accepted: 3605 ...