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();
        }
    }
}

数据库中结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值