- 创建SessionFactory时buildSessionFactory()方法过期
SessionFactory sf = new Configuration() .configure() // 直接用hibernate.cfg.xml来进行配置和创建 .buildSessionFactory();B 在4.0.0版本中,因Configuration().configure()方法被废除了,故用以下方式来创建
Configuration config = new Configuration() .addResource("org/monday/domain/Customer.hbm.xml"); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .buildServiceRegistry(); SessionFactory sf = config.buildSessionFactory(serviceRegistry);在此方法中默认使用hibernate.properties文件来进行配置,而hibernate.properties文件中不能添加映射文件(.hbm.xml),所以只能用.addResource("org/monday/domain/Customer.hbm.xml")来添加映射文件,这里必须是全路径。
使用如下方法时,读取hibernate.cfg.xml时会出错(找不到元素 'hibernate-configuration' 的声明)
Unable to perform unmarshalling at line number 4 and column 26 in RESOURCE hibernate.cfg.xml
可能是这个版本对DTD不识别,或者是方法运用错误。
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .configure() //想通过这个来读取hibernate.cfg.xml来进行配置 .buildServiceRegistry(); SessionFactory sf = new MetadataSources( serviceRegistry ) .buildMetadata() .buildSessionFactory();C 在4.0及以上版本中,用hibernate.cfg.xml来创建sessionFactory的方法
从Hibernate 4之后,Configuration类中,原先常用的,获取SessionFactory的方法buildSessionFactory()被标记为过时,官方建议使用buildSessionFactory(ServiceRegistry sr)这个方法来获取SessionFactory。新的方法,我理解,是因为用户有可能(虽然很罕见)根据不同的cfg.xml文件来创建出不同的Configuration对象实例,新的方法可以根据不同的实例来构建出不同的ServiceRegistry,进而得到不同需求的sessionFactory.
这样做的具体用例我虽然还没有遇到,但是可以想象,新的方法对分布式数据库将有良好的支持。
比如,一个分布式数据库系统中包含了分布在多个不同主机,不同类型的数据库,我们开发一个WEB应用,要求对这些数据库都要进行操作,假如这些数据库的信息分别写在了多个cfg.xml中,那么,我们就可以根据这些不同的配置文件,生成针对不同数据库SessionFactory,并将其保存在一个Map中,数据库名作为键值,这样我们就可以在实现DAO层的时候,根据访问不同数据库的需要而获取到不用的Session.
private static final SessionFactory sessionFactory = buildSessionFactory(); private static ServiceRegistry serviceRegistry; Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry(); return configuration.buildSessionFactory(serviceRegistry);
package cn.com.zyx.model; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class StudentTest { public static void main(String[] args) { Student s = new Student(); s.setName("111"); s.setSex("男"); Configuration cfg = new Configuration(); cfg.configure(); //SessionFactory sf=cfg.configure().buildSessionFactory();//*过期方法*解析Hibernate.cfg.xml 然后返回一个已经拥有配置选项的Configuration ServiceRegistry sr=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); //SessionFactory类似数据库库的一个Connection SessionFactory sf =cfg.buildSessionFactory(sr); //打开一个连接 Session session =sf.openSession(); //开始一个事务 session.beginTransaction(); session.save(s); //获得一个事务,并提交 session.getTransaction().commit(); //关闭连接 session.close(); //关闭工厂 sf.close(); } }
- Error applying BeanValidation relational constraints错误的解决
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at cn.com.zyx.model.StudentTest.main(StudentTest.java:20)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
... 4 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
... 9 more
Caused by: javax.validation.ValidationException: Unable to instantiate Configuration.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:272)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
... 10 more
javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包,但是找不到,所以beanvalitionFactory错误。
相关推荐
Spring 4.x 是一个重要的Java框架,专注于简化企业级应用程序开发。这个版本的Spring框架引入了许多新特性,改进和优化,以适应不断变化的开发需求和技术趋势。在本文中,我们将深入探讨Spring 4.x的核心特性、优势...
**Hibernate 4.x及更高版本的变化** 从Hibernate 4.x开始,Annotation已经成为主要的映射方式,XML配置逐渐退居二线。新的版本集成了对Annotation的支持,因此,对于新项目来说,直接使用注解进行对象关系映射是...
4. **数据访问**:Spring提供了多种数据访问抽象层,包括JDBC、ORM(如Hibernate)、NoSQL数据库支持等,简化了数据库操作。 5. **安全性**:Spring Security是一个强大的安全框架,提供了认证、授权等多种安全相关...
虽然文档中提到对 Hibernate 4 的支持不感兴趣,但 Spring 3.x 对 Hibernate 4 提供了更好的支持,增强了与 ORM 技术的整合能力,为开发者提供了更多的选择。 #### 七、Spring 测试框架 Spring 3.x 的测试框架进行...
随着Tomcat从5.0版本升级到5.5.x版本,其配置发生了诸多变化,特别是对Tomcat JNDI的配置方式产生了显著的影响。这对希望在Hibernate安装中利用Tomcat JNDI提供的DataSource配置便利性的开发者来说尤为重要。同时,...
6. 集成能力:Drools4.x可以轻松地与Spring、Hibernate等Java企业级框架集成,使得在现有应用中引入规则引擎变得简单。此外,它还提供了RESTful API,可以与其他系统进行交互。 7. 性能优化:在Drools4.x中,对性能...
8. **DOM4J**: 一个Java的XML处理库,Hibernate使用它来解析和生成XML配置文件,对应的JAR为`dom4j-x.x.x.jar`。 9. **EclipseLink**: 如果你同时使用了JPA,可能会有EclipseLink的相关JAR,虽然不是Hibernate核心...
3. **更广泛的支持**:不仅支持Hibernate 3.x,还扩展到4.x和5.x版本,适应了Hibernate框架的演进。 4. **增强的错误处理**:3.1.9版的错误提示更加明确,帮助开发者快速定位问题,提高了开发效率。 四、Jeecms...
4. **3.2.x系列** - **3.2.7.ga (2009-06-03)**:这个版本修复了一些bug,并增强了安全性。 - **3.2.5.ga (2007-07-31)**:这个版本对之前的版本进行了优化,并加入了一些新特性。 - …… - **3.2.0.ga (2006-10...
【标题】:“Hibernate 3.1+Tomcat 5.5.X(配置JNDI篇)” 【描述】:文章介绍了在Tomcat 5.5.X版本中如何配置Hibernate 3.1,特别是关于JNDI(Java Naming and Directory Interface)的设置方法。 【标签】:...
5.1.x版本是Spring发展中的一个重要里程碑,它在前一版本的基础上进行了诸多优化和增强,以适应不断变化的开发需求。本文将对Spring Framework 5.1.x进行深入剖析,探讨其核心组件、新特性和最佳实践。 一、Spring...
9. **版本兼容性**:HibernateTools 3.2.0.GA对应的是Hibernate的一个较旧版本,可能不支持最新版的Hibernate特性,但仍然适用于基于Hibernate 3.x的项目。 通过安装和使用HibernateTools-3.2.0.GA,开发者可以更...
最后,我们来到Hibernate 4.3.6.Final,这是4.x系列的一个稳定版本,包含了很多重要的改进和新特性: 1. **Java 8支持**:完全兼容Java 8,利用了新语言特性的优势,如Lambda表达式。 2. **HHH(Hibernate ORM)...
在Hibernate 4.x中,推荐使用`SessionFactory`的工厂类`Configuration`来构建会话工厂,如`SessionFactory sf = new Configuration().configure().buildSessionFactory();` Oracle 11G是Oracle数据库的一个版本,...
- 使用命令行工具:`java -jar hibernate-tools-X.Y.Z.jar hbm2ddl -db hsqldb -dialect org.hibernate.dialect.HSQLDialect -input hibernate-mapping.hbm.xml` - 通过编程方式调用。 #### 四、事务和并发控制 ...
<version>5.x.y.Final</version> <!-- 使用适合项目的版本 --> ``` 配置完成后,我们需要在Hibernate的配置文件(如hibernate.cfg.xml或application.yml)中启用Envers,并指定审计表的命名策略: ```xml <!-- ...
本压缩包文件"hibernate-2.1rc1.zip"是Hibernate 2.1的候选发布版,被誉为一个相当稳定且bug较少的版本,对于那些需要使用Hibernate 2.x系列的开发者来说,无疑是一个可靠的资源库。 Hibernate 2.1是Hibernate发展...
在这个上下文中,"Spring 3.x"指的是Spring框架的第三个主要版本,它在2010年发布,包含了许多重要的改进和增强,例如对Java配置的支持、AOP(面向切面编程)的改进以及与Hibernate等其他框架的集成优化。...
例如,Hibernate 4.x版本引入了JPA 2.1规范的支持,提供了更好的类型安全的查询API(Criteria API)。 2. **API变更**:新版本可能会对API进行调整,包括接口方法的增删改,这可能需要开发者更新代码以适应新版本。...