0 évaluation0% ont trouvé ce document utile (0 vote)
121 vues9 pages
First-level caching is a mandatory requirement for Hibernate Session object. There is an optional second-level cache with Hibernate SessionFactory object. Can a single hibernite session object be used across multiple threads?
First-level caching is a mandatory requirement for Hibernate Session object. There is an optional second-level cache with Hibernate SessionFactory object. Can a single hibernite session object be used across multiple threads?
Droits d'auteur :
Attribution Non-Commercial (BY-NC)
Formats disponibles
Téléchargez comme DOC, PDF, TXT ou lisez en ligne sur Scribd
First-level caching is a mandatory requirement for Hibernate Session object. There is an optional second-level cache with Hibernate SessionFactory object. Can a single hibernite session object be used across multiple threads?
Droits d'auteur :
Attribution Non-Commercial (BY-NC)
Formats disponibles
Téléchargez comme DOC, PDF, TXT ou lisez en ligne sur Scribd
Yes, first-level caching is a mandatory requirement for Hibernate Session Object. 2 Is there any cache associated with Hibernate SessionFactory Object? Yes, there is an optional second-level cache with Hibernate SessionFactory object. 3 Can a single Hibernate Session object be used across multiple threads running within a process No, Hibernate Session is basically single- threaded and not to be used across multiple threads. 4 Is this same for Hibernate SessionFactory object as well? No, Hibernate SessionFactory is basically thread-safe, thus can be re-used across multiple threads and multiple Transacions as well. 5 How can the second-level caching for Hibernate SessionFactory object be disabled? By setting appropriate hibernate.cache configuration related properties, one can enable/disable second-level caching for Hibernate SessionFactory object but only for once before SessionFactory is created 6 Is it possible to use Hibernate Session object with the scope and context defined by JTA Transaction ? Yes, starting with Hibernate 3.0.1 version, Sessionfactory.getCurrentSession method has the scope and context defined by the running JTA Transaction scope and context. But as of Hibernate 3.1 version, getCurrentSession method of Hibernate SessionFactory has the current Session Scope and Context controlled by pluggable current Session Context class, defined in configuration parameter such as hibernate.current_session_context_class. 7 As of Hibernate 3.1 version can you be able to explain how many ways scope and context of Hibernate current contextual session be handled? As of Hibernate 3.1 version, Hibernate has three ways to handle current contextual session, such as JTASessionContext ThreadLocalSessionContext ManagedSessionContext. 8 What is the difference between class tag and component tag in Hibernate from the persistence perspective? class tag refers to an Entity that is persisted with an identifier, while component tag means the POJO associated with component tag is persisted along with contained object as a value type. So it doesn't require an identifier, while the contained object has an entity reference, not for the component object. What is the difference between component and dynamic component? Component in Hibernate world, means something that is embeded in a contained object and there exist a composition style of binding between the contained object and the component object. So component is declared inside a class tag, just to say one type of use. Dynamic-component has the same characteristics as component but there exists a difference in the way dynamic-component can be used to map a bean's attribute, this can be of type java.util.Map with the key defined in mapping file and corresponding value from the table's column. So with dynamic-component, there can be possibility of changing the attribute key/value pair during deployment time, just by changing the name and column values in the mapping configuration file. 9 Can a Hibernate Session, that is retrieved/created from a Hibernate SessionFactory, be shared across multiple concurrent Thread/Requests? No, as Hibernate Session is not Thread-Safe, so sharing it with multiple concurrent Thread of execution or request will have concurrentcy issues. It is always better to use a single Hibernate Session for a single transaction, that means as long as the transaction is running or not commited, a single session can be used. As a Transaction is running in isolation for each Thread or request. 10 What is a good approach of handling Hibernate Session, in case of any database exception or Hibernate Exception that is occuring while a Hibernate Session is in use? As Hibernate Session caches Persistent Object, in case of any Database exception or Hibernate Exception occuring, then Session cache might have some stale data or Persistent Object not in sync with Database. So it is always better to rollback Transaction, close Session, in this circumtances. 11 How Hibernate manages Transaction timeout in Managed and Non-managed environments? In Managed environment, that is JTA transaction can handle timeout, so Hibernate delegated Transaction timeout task to JTA Transaction. But in non-managed environment, Developer has to explicitly specify Transaction timeout parameter while using Transaction from Hibernate Session by using setTimeOut(time in seconds). But this feature cannot be fully compared with JTA based Transaction timeout operation. Any one wants to comment on these questions and answer, please do so. 12 What is the first level cache and the second level cache in Hibernate? First level cache is associated with Hibernate Session object, and is mandatory, while second level cache is optionally associated with Hibernate SessionFactory instance. 13 Which cache is cluster-level, first level or second level? Second level cache is optional, but can be cluster-level. How many different instance states exist for an instance of a persistent class while using Hibernate? There are three different instance states, such as Transient, Persistent, and detached. 14 What are the instances having persistent entity? Persistent and detached instances are having persistent entity. Can you please explain these three instance states with help of an example? Suppose in a web application, if a user information is passed from the registration page shwon on browser for the first time, then the UI helper class will be creating an instance of the User class, and populate all the relevant details onto the USER object. At this level USER object has a Java identity but no persistent identity. So this USER object is transient instance state. Then if this USER instance is sent to the business level, and with help of DAO, is stored in backend db, then this USER instance has got both Java and Persistent identities, so is having Persistent instance state. If this USER object is again sent to the UI level for displaying an edit screen, then this USER instance in UI tier is detached instance state, as is having both Java and persistent identity. But Hibernate cann't relate Java and persistent identities for detached instance states.