2
A
回答
5
可能不是没有使用反射和依靠Hibernate在未来不会破坏你的代码。您需要从SessionFactory获取属性,但它不是公共的,因此您必须通过反射来查找字段,然后使用field.setAccessible来访问它。例如:
Field f = SessionFactoryImpl.class.getDeclaredField("properties");
f.setAccessible(true);
Properties p = (Properties)f.get(sessionFactory);
然后使用环境中的常量拉出相关设置。如果您正在查找实际的数据库连接设置,并且您的应用程序正在使用jndi,那么可以使用jndi名称来获取DataSource并检查它以获取连接信息。
对于这种类型的事情,我通常只使用调试器,设置一个断点,然后在变量周围徘徊,直到找到信息的位置;然后查看它是否公开可用,如果不是,则使用反射来实现它。虽然没有保证。
3
如果您使用JDBC,则可以始终获取连接及其元数据。如果你正在使用Spring的事务管理器,你可以得到这样的:
transactionManager.getDataSource().getConnection().getMetaData()
这说明tons of information有关数据库及其连接,包括用户名。在persistence.xml中有一些信息可能涉及数据库连接池,这些数据库连接池通常不会存储在Hibernate中的任何地方,而是存储在实际的连接池代码中。
你需要从persistence.xml文件中获得什么信息?
相关问题
- 1. Spring/Hibernate:如何从LocalContainerEntityManagerFactoryBean获取配置
- 2. 如何获得属性获取或设置属性属性
- 3. 如何在Java Hibernate配置中设置属性?
- 4. 用Hibernate配置更改max_allowed_packet属性
- 5. Hibernate 4.3.5忽略v $ session.program配置属性
- 6. 如何使用Spring,Hibernate 3.3和c3p0配置MySQL连接属性?
- 7. 如何配置Hibernate ORM数据库属性与码头工人
- 8. 如何配置Hibernate @Type注释的属性
- 9. 如何在Hibernate XML配置文件中使用属性表示
- 10. 如何获取属性设置指令?
- 11. Magento - 如何获取属性位置
- 12. 如何配置XML解串器来获取属性?
- 13. 如何通过自定义属性获取配置文件?
- 14. 如何获取自定义属性常用配置文件ASP.NET?
- 15. 如何使用jQuery获取magento可配置属性项目
- 16. 获取从web配置配置文件属性名称
- 17. 如何获取属性重写属性?
- 18. 如何获取属性属性列表?
- 19. Magento:如何获取属性集属性?
- 20. 获取从类值Hibernate配置
- 21. 如何从Hibernate的第三个表中获取属性?
- 22. 如何在hibernate中仅获取期望的bean属性?
- 23. 如何获取属性设置的属性名称?
- 24. 获取StackOverflowException设置属性
- 25. C#获取,设置属性
- 26. 获取和设置属性
- 27. 获取和设置属性
- 28. 如何获取XML属性?
- 29. 如何获取属性值?
- 30. 如何获取XML属性?
sessionFactory无法解析为变量。我怎样才能得到一个?我通过SessionFactory *类搜索得到一个实例,但我不知道我在做什么。我手头上有一个javax.persistance.EntityManager –
我没有使用EntityManager,但它看起来像Hibernate的实现是HibernateEntityManager,它有一个getSession方法。一旦你有会话,你可以获得SessionFactory。所以像((HibernateEntityManager)entityManager).getSession()。getSessionFactory() –
它的工作,谢谢! –