Java 休眠配置-会话工厂扫描?
我们有一个hibernate.cfg.xml文件。有没有办法告诉Hibernate只扫描一个目录,而不必在这里为每个类添加一个条目Java 休眠配置-会话工厂扫描?,java,hibernate,orm,hibernate.cfg.xml,Java,Hibernate,Orm,Hibernate.cfg.xml,我们有一个hibernate.cfg.xml文件。有没有办法告诉Hibernate只扫描一个目录,而不必在这里为每个类添加一个条目 <hibernate-configuration> <session-factory> <mapping class="com.abc.domain.model.A" /> <mapping class="com.abc.domain.model.B" /> <mappi
<hibernate-configuration>
<session-factory>
<mapping class="com.abc.domain.model.A" />
<mapping class="com.abc.domain.model.B" />
<mapping class="com.abc.domain.model.C" />
<mapping class="com.abc.domain.model.D" />
<mapping class="com.abc.domain.model.E" />
</session-factory>
</hibernate-configuration>
那怎么办
<mapping assembly="SomeAssemblyName" />
那怎么办
<mapping assembly="SomeAssemblyName" />
NHibernate的最佳做法是在构建ISessionFactory API之前,只向配置中添加程序集 罗伯特确实指出了这一点 另一种方法是执行运行时配置,如下所示:
Configuration cfg = new Configuration();
cfg.AddAssembly(typeof(OneOfYourDomainType).Assembly.Name); // Or something like that by memory.
cfg.Configure();
static ISessionFactory sessionFactory = cfg.BuildSessionFactory();
将ISessionFactory设置为静态非常重要,因为实例化成本非常高
typeof(OneOfYourDomainType).Assembly.Name返回包含所有域对象的程序集的名称,以及正确的映射。然后,添加此项,即添加程序集,无需对域类型重复此过程。NHibernate的最佳做法是在构建ISessionFactory API之前仅向配置中添加程序集 罗伯特确实指出了这一点 另一种方法是执行运行时配置,如下所示:
Configuration cfg = new Configuration();
cfg.AddAssembly(typeof(OneOfYourDomainType).Assembly.Name); // Or something like that by memory.
cfg.Configure();
static ISessionFactory sessionFactory = cfg.BuildSessionFactory();
将ISessionFactory设置为静态非常重要,因为实例化成本非常高
typeof(OneOfYourDomainType).Assembly.Name返回包含所有域对象的程序集的名称,以及正确的映射。然后,添加这个程序集,您就可以添加程序集,并且不需要对域类型重复这个过程。要获得发现机制,您需要使用实现Java持久性标准发现机制的Hibernate EntityManager。否则,您需要列出您的类 要获得发现机制,需要使用Hibernate EntityManager,它实现Java持久性标准发现机制。否则,您需要列出您的类 Tapestry使用一个实用程序类来实现这一点,该实用程序类检查类路径以找到包含所有Hibernate注释类的包,然后检查磁盘上的文件以获得类名。如果您可以将它们全部放在一个包中(或者愿意编写更复杂的类路径实用程序),那么可以找到它们,然后调用configuration.addAnnotatedClass(cls)。这里有一些警告,例如,您不能太喜欢外部jar、使用自定义加载程序加载的类等等,但是对于标准情况,它可以很好地工作
您可以在这里查看Tapestry是如何实现的:尽管这可能会引入其他Tapestry特定的类。Tapestry使用一个实用程序类来实现这一点,该实用程序类检查类路径以查找包含所有Hibernate注释类的包,然后检查磁盘上的文件以获取类名。如果您可以将它们全部放在一个包中(或者愿意编写更复杂的类路径实用程序),那么可以找到它们,然后调用configuration.addAnnotatedClass(cls)。这里有一些警告,例如,您不能太喜欢外部jar、使用自定义加载程序加载的类等等,但是对于标准情况,它可以很好地工作
您可以在这里查看Tapestry是如何实现的:尽管这可能会引入其他特定于Tapestry的类。我正在寻找类似的解决方案,并从另一个解决方案中找到了答案。 您应该使用spring来实现这一点
我正在寻找一个类似的解决方案,并从另一个方面找到了答案。 您应该使用spring来实现这一点
现在还不清楚您在这里谈论的是Java Hibernate还是.NET NHibernate。。。我猜nhibernate标签是不正确的?不清楚您在这里谈论的是Java Hibernate还是.NET nhibernate。。。我猜nhibernate标签不正确?