Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
库来配置Hibernate,它允许关键接口的实例,而不仅仅是类名、属性或字符串_Hibernate_Class_Class Design - Fatal编程技术网

库来配置Hibernate,它允许关键接口的实例,而不仅仅是类名、属性或字符串

库来配置Hibernate,它允许关键接口的实例,而不仅仅是类名、属性或字符串,hibernate,class,class-design,Hibernate,Class,Class Design,我真的很讨厌Hibernate不允许在配置上简单地设置TransactionManager或CacheProvider以及所有其他重要接口。相反,它有一些变体,例如将类名或类名带到查找或提供程序。同样,直接传递实例是不可能的,必须使用诸如设置threadlocal、设置某些类定位器名称并让它读回threadlocal之类的技巧。丑陋、肮脏等等。肯定有人把这一切都清理干净了,这就是我问问题的原因 RANT 想一想,如果可以简单地设置配置对象,那么配置类将不再有几十个字符串属性,并且很容易注入 游

我真的很讨厌Hibernate不允许在配置上简单地设置TransactionManager或CacheProvider以及所有其他重要接口。相反,它有一些变体,例如将类名或类名带到查找或提供程序。同样,直接传递实例是不可能的,必须使用诸如设置threadlocal、设置某些类定位器名称并让它读回threadlocal之类的技巧。丑陋、肮脏等等。肯定有人把这一切都清理干净了,这就是我问问题的原因

RANT

想一想,如果可以简单地设置配置对象,那么配置类将不再有几十个字符串属性,并且很容易注入

  • 游泳池
  • 事务管理器查找
  • 缓存提供程序
  • 数据源
简朴

编写新的提供者将变得非常容易,不再需要重新发明从字符串和适配器读取配置的协议。通过适当的依赖注入,只需编写后者

工作溶液 我首先对一些Hibernate类进行子分类,以便用实例或包装器替换默认类

  • 配置-必须创建接受SessionFactory的子类,因为接受SessionFactory的ctor受保护。不涉及其他方法
  • SettingsFactory-重写键方法以返回实例
等等

编写我自己的会话工厂