Hibernate初探(一)

原创 2005年05月30日 11:23:00

20050530     30摄氏度 星期一』
      
上周六到学校体育馆痛痛快快的打了一上午羽毛球,由于常时间没锻炼,两个小时下来,胳膊累得不会动了,甚至连笑都嫌腮帮子都疼,然后坐车回去,在车上小憩 了一会,到家后吃点饭立刻精神百倍,想这上周都还没做成什么事,怪对不起自己的,马上翻开《Hibernate Reference》,因上周五也看了这本书,但按树上的例子,我缺没做成功,心里很愤恨,是自己不认真?还是书上的例子有问题?...郁闷了一会,决定 仔仔细细把书看一遍。
      
看了半个小时,了解了其体系结构、OR映射基础、HibernateSQL使用方法,然后上机测试还是那个Employee表,唉!错误还是涛声依旧
      
冲了把凉......
      
再次翻开书,惊奇的发现了一句话:每个持久化类都应该有一个标志属性,这个属性被用来区分持久化对象。看到这句话,我觉得象找到了救命稻草一样,直觉告诉我这句话将会解答我失败的原因。于是开始想,
既然Hibernate是把shuj库中的数据做为一个java对象来在程序里使用,那它是如何做OR映射的那?表名和类名映射?既然这样,类名又是通过 什么和数据库中的表相关联的那?他们之间肯定有关系,可能就像若干个表中通过主键、外键将几个表关联起来一样。(嗯,有点头绪了)再往下看:” Hibernate附带了几种不同的标识生成器,...“,标识生成器?重要线索!可能刚才的疑问就是没搞清楚这个标识生成器的原因!结合着数据表主键、 外键的相关知识,我初步判断我写的主方法没错,错误出就出在数据表上!
      
检查数据表,尝试给employee加一个主键,重新建表:
CREATE TABLE Employee(ID INTEGER PRIMARY KEY,Name VARCHAR,Sex VARCHAR,Phone VARCHAR,Email VARCHAR,Address VARCHAR);
,重新在Eclipse中重复new的动作,产生Hibernate 配置文件和mapping file,以及Hibernate Sync生产的包。在EmployeeDAOsave一个employee对象,系统报了一个不同的错误,是jndi的错误,虽然有错,但我还是很高 兴,因为我知道刚才的推断是正确的!
       
然后我有查了一些质料,找到了问题所在,我不是通过jndi绑定数据源的,因此我不需要
        <property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JTATransactionFactory</property>
        <property name="jta.UserTransaction">java:comp/UserTransaction</property>
这两个属性的定义,在hibernate.cfg.xml中删除这两个属性的定义重新运行,ok!该对象终于存到db中了。

主方法内容如下:
public class EmployeeDAO extends BaseEmployeeDAO {
    public static void main(String[] args){
        try{
            _RootDAO.initialize();
            EmployeeDAO empDAO = new EmployeeDAO();
           
            com.leeyoung.Department dep = new Department(0);
           
            com.leeyoung.Employee emp = new com.leeyoung.Employee();
            emp.setAddress("
武昌区武太闸涂家沟社区");
            emp.setEmail("imchaoyang@163.com");
            emp.setId(2);
            emp.setDepartmentid(dep);
            emp.setName("chaoyang");
            emp.setPhone("13871443453");
            emp.setSex("male");
           
            empDAO.save(emp);
            System.out.println("ok!");
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

数据库中结果如下:

Hibernate初探之一对多映射(1)

以下内容来自慕课网视频《Hibernate初探之一对多映射 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-3 创建HibernateUtil工具类 2-4 在MySQL数据...

Hibernate初探之一对多映射(2)

以下内容来自慕课网视频《Hibernate初探之一对多映射》 第三章 单向多对一关联 3-2 单向多对一的配置 3-3 测试-添加学生信息 3-3 双向多对一测试 第四章 inverse和cascad...

hibernate初探之一对多映射(二)

紧接着昨天的继续做删除,修改操作。 修改学生属性 //修改学生信息 @Test public void updateStudent() { Grade g=new Grade("ja...

Hibernate初探【3】Session中get()和load()的区别

准备测试数据(三条) 1、get()方法直接返回实体类,如果查不到数据则返回null。load()会   返回一个实体代理对象(当前这个对象可以自动转化为实体对象),   但当代...

初探Hibernate

概述Hibernate可以直接操作Java对象。底层使用JDBC实现,是对JDBC轻量级的封装。相关概念常用概念: * SessionFactory * Session * Transactio...

hibernate初探——艰辛的helloworld

1、下载hibernate ORM,官网地址:http://hibernate.org/orm/downloads/ 我下的这个final版,这是我痛苦的开始,jar包的选择对小白是个永远的痛。。 ...

NHibernate(面向.net)之旅:初探SchemaExport工具使用(本文与Hibernate无异)

NHibernate之旅(19):初探SchemaExport工具使用 2008-11-11 17:06 by 李永京, 10660 visits, 收藏, 编辑 本节内容 ...

Hibernate初探【2】

hibernate的核心类和接口 Configuration 类 1.      读取hibernate.cfg.xml 2.      管理对象关系映射文件 3.      加载hibernat...

hibernate初探之单向一对多映射

什么叫做单向一对多的映射呢? 我们首先要知道映射是有方向的,分为单向和双向。 比如班级和学生。站在班级的角度,一个班级可以有多个学生,  在这里班级就是“一”方 学生就是“多”方 这种关系就是一对多的...

Hibernate初探之单表映射笔记(1)

以下内容来自慕课网视频《Hibernate初探之单表映射》 第一章 Hibernate初识 1-2 什么是ORM 1-3 Hibernate简介 1-4 Hibernate开发前准备 1-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate初探(一)
举报原因:
原因补充:

(最多只允许输入30个字)