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() –
它的工作,謝謝! –