Jan 27, 2011

Change Seam Persistence Provider From Hibernate To EclipseLink




JBoss Seam default Persistence Provider is Hibernate. If you want to change Persistence Provider from Hibernate to OpenJPA, here is a tutorial: http://seamframework.org/Documentation/UsingOpenJPAAsPersistenceProviderInsteadOfHibernate

OK, Here is a method to change Persistence Provider to EclipseLink.

First. Edit the persistence.xml:


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="opentutorial" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>jdbc/oracle</non-jta-data-source>
        <class>com.opentutorial.entity.User</class>
        <class>com.opentutorial.entity.UserInfo</class>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="JBoss" />
            <property name="eclipselink.target-database" value="Oracle" />
            <property name="eclipselink.logging.level" value="INFO" />
            <property name="eclipselink.logging.timestamp" value="true" />
            <property name="eclipselink.logging.session" value="true" />
            <property name="eclipselink.logging.thread" value="false" />
            <property name="eclipselink.logging.exceptions" value="true" />
            <property name="eclipselink.cache.type.default" value="NONE" />
        </properties>
    </persistence-unit>
</persistence>

  • transaction-type must be RESOURCE_LOCAL
  • provider change to EclipseLink's PersistenceProvider
  • Must be non-jta-data-source
  • Declare all entity class

Now, edit components.xml, add below tag value in components.xml:
<transaction:entity-transaction
    entity-manager="#{entityManager}" />

<persistence:entity-manager-factory
    persistence-unit-name="opentutorial" name="entityManagerFactory" startup="false" />

<persistence:managed-persistence-context
    name="entityManager" auto-create="true" entity-manager-factory="#{entityManagerFactory}" />

<component class="org.jboss.seam.persistence.PersistenceProvider"
    name="org.jboss.seam.persistence.persistenceProvider" scope="stateless" />


Now. Seam will use EclipseLink as your PersistenceProvider.


2 comments:

Anonymous said...

In seam 3 does not exists components.xml, any suggestion?

for IT the said...

Enjoyed your approach to explaining how it works, hope to see more blog posts from you. thank you!

Hibernate Online Training | Java Online Training | Java EE Online Training


Spring Hibernate Online Training | Hibernate Training in Chennai Java Training Institutes

Post a Comment

Twitter Delicious Facebook Digg Google Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Hostgator Coupon Code