很抱歉延迟了一天。在升级Hibernate构建的Gradle后,我的Gradle插件遇到了一个小问题。现在一切都已解决...
我们很高兴宣布Hibernate Core 4.0.0.Alpha3版本的发布。查看变更列表以获取所有详细变更。这是Hibernate 4的最后一个Alpha版本,Beta1计划于6月1日发布。
4.0.0.Alpha3版本主要是继续工作于新的元模型代码,并完善了SessionFactory创建的新API,该API利用了元模型代码以及第一个Alpha版本中引入的ServiceRegistry代码(并进行了清理)。这些内容也将是Beta1的重点,因为元模型代码仍有很多工作要做,SessionFactory的构建与这些工作密切相关。然而,我认为SessionFactory构建的API已经相当完整。因此,我想借此机会介绍这个API,即使它现在还没有完全连接。
目前,您从ServiceRegistry开始
org.hibernate.service.BasicServiceRegistry serviceRegistry = new org.hibernate.service.ServiceRegistryBuilder() ... // configure the services buildServiceRegistry();
这里的配置意味着直接提供服务(或服务初始化器)或提供服务将拾取的设置。
接下来,我们收集“元数据来源”,即Hibernate要查找的描述您的领域模型及其与关系数据库映射的元数据的各种来源。这些来源可能是hbm.xml文件、标注类等。
org.hibernate.metamodel.MetadataSources metadataSources = new org.hibernate.metamodel.MetadataSources( serviceRegistry ) .addResource( "some.hbm.xml" ) .addAnnotatedClass( SomeEntity.class ) ...;
值得注意的是,我们现在对曾经只是被丢弃到org.hibernate.cfg.Configuration的信息有了自然的生命周期。此前的步骤仅收集元数据来源,我们还需要Hibernate处理它们。
org.hibernate.metamodel.Metadata metadata = metadataSources.buildMetadata();
然后最终构建SessionFactory
SessionFactory sessionFactory = metadata.buildSessionFactory();
您甚至可以将这些步骤中的许多步骤链在一起
BasicServiceRegistry serviceRegistry = new ServiceRegistryBuilder() ... // configure the services buildServiceRegistry(); SessionFactory sessionFactory = new MetadataSources( serviceRegistry ) .addResource( "some.hbm.xml" ) .addAnnotatedClass( SomeEntity.class ) .buildMetadata() .buildSessionFactory();
在本次版本中,org.hibernate.cfg.Configuration 已被弃用,而 org.hibernate.cfg.AnnotationConfiguration 已被弃用一段时间了。两者都将在 4.0.0 版本最终发布之前被移除。我们仍在规划 org.hibernate.ejb.Ejb3Configuration 的替代方案将是什么样子,但在此期间它也已弃用(通过 javax.persistence.Persistence 构建EntityManagerFactory 始终是推荐的方法)。
本次版本中,我们对包的重新组织也更加激进。对于那些不熟悉的人,总体思路是这样的,这是一步预 OSGi 化的步骤,因此在这方面还会有更多内容。基本思路是,我们根据用途来分割包。被视为 API 部分的将保留在相同的包中,构成各种 SPI 的内容将移动到 'spi' 包中,最后内部(非公共)的内容将移动到 'internal' 包中。这项工作尚未完成,但正在推进中。
一如既往,如果您有任何评论,最佳地点是 hibernate-dev 邮件列表或 freenode 上的 #hibernate-dev IRC 频道。如果您对即将进行的任何更改有任何想法,或者希望在迈向 4.0.0.Final 的过程中提供帮助,现在正是时候。我们每周一上午 10 点在 #hibernate-dev IRC 频道举行开发会议。会议结束后,我们还会将 会议纪要
发送到开发邮件列表。
一如既往,本版本可以从 SourceForge 的 捆绑包形式 以及 JBoss Nexus 存储库中的 org.hibernate 组别中获取。