hibernate4.0配置遇到的

        新版本的hibernate 4.0官方文档自3.5之后就不再有中文文档了,但是参照3.5的文档大致参考价值不是很大了除了一些基本信息,用网上或者视频教程给的代码也能测试通过,但是还是有很多的地方不一样,从配置到设置属性总有一些小细节让人抓毛。搜集了一些网上的解决方案,以及我遇到的问题罗列如下:
1、hibernate 4.*的引入包
     hibernate再也不再向3.5版本以前那样需要分开导入不同的很多包,可以直接去lib里面找到required文件夹里面的所有包导入工程里面就可以了。至于里面其他几个文件夹在此不再多做介绍。这个required文件夹里面的包都是基本必须的。
2、配置文件
     使用Myeclipse,在src里面创建hibernate.cfg.xml文件;
      这里要特别注意:如果完全按照官方文档上的直接复制进行配置,总会报错
      Exception in thread "main" org.hibernate.MappingException: invalid configuration
      Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
      出错原因(红色部分):
      <hibernate-configuration xmlns=" http://www.hibernate.org/xsd/hibernate-configuration "
        xsi:schemaLocation="
http://www.hibernate.org/xsd/hibernate-configuration hibernate-configuration-4.0.xsd"
        xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance ">
    解决办法:
   1、将红色部分去掉;2、在文件里面<hibernate-configuration>上面添加如下配置信息 3、其他的按照网上或者一些教程里面的设置配置文件就可以了
<!DOCTYPE hibernate-configuration PUBLIC   "-//Hibernate/Hibernate Configuration DTD      3.0//EN"   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
3、相对应的model包里面*.hbm.xml的配置
   按照文档当中的配置就可以,注意:
   1、表名与类名一致时,可以不写表名,类名要与创建的类名一致,数据表不区分大小写的
   2、类里面的成员变量与表属性名字一致时,可以不写表属性名
   3、记得回到hibernate.cfg.xml配置mapping,官方文档已经给了一个例子;照着改就可以了,这里不是用"."来间隔而是用"/".
4、代码实现
   在网上搜到的一些测试程序,里面都用到了buildSessionFactory(),但是已经被弃用;但是网上给出的新版本方法存在一个问题:
    例如:
          Configuration cfg = new Configuration().configure();
        SessionFactory sf = cfg.buildSessionFactory( new ServiceRegistryBuilder().buildServiceRegistry());  <SPAN style= "COLOR: #33cccc" > //以前的cfg.buildSessionFactory()方法被废弃,查网上大多使用该方法</SPAN>
        Session session = sf.openSession();
        session.beginTransaction();
        session.save(bk);
        session.getTransaction().commit();
        session.close();
        sf.close();
   会报错:Exception in thread "main" org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
  解决办法:
  将红色部分改成:
    cfg.buildSessionFactory(new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry());
  本人测试通过;
  但是在网上搜到,这样的修改同样也可能报错,错误如下:
Exception in thread "main" org.hibernate.HibernateException: Error applying BeanValidation relational constraints
  给出的解决方案如下:  
  hibernate.cfg.xml中加入一条配置:
         < property name ="javax.persistence.validation.mode" > none </ property >
  关键在于Unable to instantiate Configuration, 如不添加默认会要求Validation provider。 做完这些,一切正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值