我可以将 Hibernate 配置为自动扫描包以从 @Entity
注释的 beans 创建一个 SessionFactory
吗?
我目前正在使用
Configuration config = new Configuration() ;
config.addAnnotatedClass(MyEntity.class);
我不想使用 hibernate.cfg.xml
来配置映射。
请注意,我想在不使用任何 Spring 或此类框架的情况下在纯 Java 项目中实现此目的。
类似的问题之前已经用 Spring 回答过,但我想在不使用 Spring 或其他框架的情况下实现它。我对一些执行此操作的简单库持开放态度。
最佳答案
没有。即使使用最新的 Hibernate 5 版本,您也不能说 Hibernate 扫描包中的持久类。 Configuration
有方法 addPackage()
,但它用于读取“包级元数据”(.package-info
- 文件)。
你不想用Spring,那你能做什么:
使用 fluent-hibernate
你可以使用 EntityScanner来自 fluent-hibernate库(除了库,你不需要其他 jar)
对于 Hibernate 4 和 Hibernate 5:
Configuration configuration = new Configuration();
EntityScanner.scanPackages("my.com.entities", "my.com.other.entities")
.addTo(configuration);
SessionFactory sessionFactory = configuration.buildSessionFactory();
使用新的 Hibernate 5 引导 API:
List<Class<?>> classes = EntityScanner
.scanPackages("my.com.entities", "my.com.other.entities").result();
MetadataSources metadataSources = new MetadataSources();
for (Class<?> annotatedClass : classes) {
metadataSources.addAnnotatedClass(annotatedClass);
}
SessionFactory sessionFactory = metadataSources.buildMetadata()
.buildSessionFactory();
使用其他库
如果您已经使用了可用于扫描的库,例如 Reflections ,有一个测试项目,其中包含使用各种库进行实体扫描的示例:hibernate-scanners-test .
关于java - hibernate 扫描包可以自动创建 SessionFactory 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245619/