org.hibernate.cfg.Configuration.getClassmapping——Hibernate从4.x到5.x的迁移问题

在hibernate4.x版本中org.hibernate.cfg.Configuration的getClassMapping(className)方法在hibernate5.x被移除弃用。

工具类方法
import org.hibernate.boot.SessionFactoryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.boot.spi.SessionFactoryBuilderFactory;
import org.hibernate.boot.spi.SessionFactoryBuilderImplementor;

public class EntityMetaData implements SessionFactoryBuilderFactory {

    private static final ThreadLocal<MetadataImplementor> meta = new ThreadLocal<>();

    @Override
    public SessionFactoryBuilder getSessionFactoryBuilder(MetadataImplementor metadata, SessionFactoryBuilderImplementor defaultBuilder) {
        meta.set(metadata);
        return defaultBuilder;
    }

    public static MetadataImplementor getMeta() {
        return meta.get();
    }
}

↑我没看懂。

使用PersistentClass
MetadataSources metadataSources = new MetadataSources();
metadataSources.addAnnotatedClass(XXX.class);

Properties properties = new Properties();
properties.put(AvailableSettings.DIALECT, HSQLDialect.class.getName());
BootstrapServiceRegistry bootstrapServiceRegistry = new BootstrapServiceRegistryBuilder()
        .build();
StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder(bootstrapServiceRegistry);
standardServiceRegistryBuilder.applySettings(properties);

StandardServiceRegistry standardServiceRegistry = standardServiceRegistryBuilder.build();

MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(standardServiceRegistry);
Metadata metadata = metadataBuilder.build();
Iterator<PersistentClass> classMappings = metadata.getEntityBindings().iterator();
while (classMappings.hasNext()) {
PersistentClass mapping = classMappings.next();
System.out.println("class name: " + mapping.getClassName() + ", entity name: " + mapping.getEntityName());
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值