chaoyanglee163的专栏

人活着是要有压力的,但压力不能让一个人失去自我;压力存在,动力存在,心中永远的希望让我孜孜不倦......

Hibernate初探(一)

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
上一篇Hibernate初探
下一篇通过XSL转换XML文件
想对作者说点什么? 我来说一句

COM技术初探(一)源码

2011年01月23日 11KB 下载

hibernate基础jar包

2017年08月22日 8.48MB 下载

hibernate源码分析一[启动过程]

2011年09月23日 308KB 下载

没有更多推荐了,返回首页

关闭
关闭