JAVA Hibernate和JDBC //来自另一个应用程序的db访问混合在一起?

时间:2013-11-19 11:54:52

标签: java database hibernate java-ee jdbc

我有一个使用hibernate的应用程序,我使用entityManager。 我想知道,如果我从另一个应用程序命中数据库,我需要配置什么来休眠,不要缓存任何东西,并直接将所有内容保存到DB。如果有什么要配置或我不需要配置它并且根本不使用缓存..?

 _entityManagerFactory = Persistence.createEntityManagerFactory( "database" );

更新/合并的例子

    EntityManager entityManager = _entityManagerFactory.createEntityManager( );
    try {
        entityManager.getTransaction( ).begin( );
        entityManager.merge( object );
    } finally {
        entityManager.getTransaction( ).commit( );
        entityManager.close( );
    }

2 个答案:

答案 0 :(得分:0)

你可以在hibernate中控制2级缓存,但是1级缓存是强制性的。

关注http://www.tutorialspoint.com/hibernate/hibernate_caching.htm

答案 1 :(得分:0)

JPA有两级缓存:

第一级缓存是持久化上下文。 JPA EntityManager在持久化上下文中维护一组受管实体。第一级缓存是强制性的,无法关闭;它还保证了事务中的对象标识。

JPA第二级(L2)缓存在各种持久性上下文中共享实体状态。使用二级缓存是可选的。启用后,如果找到,将从L2缓存加载在持久性上下文中找不到的实体。

如果您使用的是Hibernate JPA持久性提供程序,则默认情况下不会配置L2缓存。但默认情况下,EclipseLink中对二级缓存的支持是打开的。以下语句是从HERE复制的:

  

默认情况下,EclipseLink使用缓存a的共享对象缓存   持久性单元读取和保留的所有对象的子集。该   EclipseLink共享缓存与本地EntityManager缓存不同。   共享缓存在持久性单元的持续时间内存在   (EntityManagerFactory或服务器)并由所有EntityManagers共享   和持久性单元的用户。本地EntityManager缓存是   不共享,仅在EntityManager或者持续时间内存在   事务。

     

也可以禁用共享缓存。这可以使用   持久性单元属性:

<property name="eclipselink.cache.shared.default" value="false"/>

因此,如果您使用的是Hibernate持久性提供程序,则不需要任何特殊配置,因为默认情况下未配置L2缓存。如果您使用的是EclipseLink,则可以按上述方式将其停用。