How to use TomEE with Hibernate

前端 未结 3 1776
鱼传尺愫
鱼传尺愫 2020-12-01 11:36

I have created very simple app with persistence context (hibernate as provider) to read some value from database. I use Eclipse with Maven.

First, I get



        
3条回答
  •  抹茶落季
    2020-12-01 11:55

    1. Copy the required Hibernate .jars to /lib

    According to the documentation ( http://tomee.apache.org/tomee-and-hibernate.html ), the following ones are sufficient and in fact they worked for me:

    /lib/antlr-2.7.7.jar
    /lib/dom4j-1.6.1.jar
    /lib/hibernate-commons-annotations-4.0.2.Final.jar
    /lib/hibernate-core-4.2.21.Final.jar
    /lib/hibernate-entitymanager-4.2.21.Final.jar
    /lib/hibernate-validator-4.3.2.Final.jar
    /lib/javassist-3.18.1-GA.jar
    /lib/jboss-logging-3.1.0.GA.jar
    

    All these .jars are contained in the Hibernate ORM 4.2.x download ( http://hibernate.org/orm/ ), except for the Hibernate Validator, which is a separate download ( http://hibernate.org/validator/ ).

    2. Edit your pom.xml

    Using the javaee-api maven artifact with a scope of provided you can now use the JPA specification in your project. However, if you have been using some Hibernate specific features, classes or annotations before, you can still refer to Hibernate in your pom.xml to match those dependencies:

    
    
        
        org.apache.openejb
        javaee-api
        6.0-4
        provided
    
    
    
        org.hibernate
        hibernate-entitymanager
        4.2.21.Final
        provided
    
    

    3. Define your database connection

    Edit /conf/tomee.xml:

    
        JdbcDriver  com.mysql.jdbc.Driver
        JdbcUrl jdbc:mysql://localhost:3306/my_dbname?autoReconnect=true
        UserName foo
        Password bar
        validationQuery = SELECT 1
        JtaManaged true
    
    

    You can also put the above ... definition into WEB-INF/resources.xml and ship it with your application instead:

    
    
        
    
    

    4. JTA Datasource

    Now that you told TomEE how to establish a connection, define a JTA datasource in /src/main/java/META-INF/persistence.xml:

    
    
    
        
            org.hibernate.ejb.HibernatePersistence
            java:openejb/Resource/myJtaDatabase
            
                
                
                
                
                
                
            
        
    
    

    5. Start using JPA

    Obtain an EntityManager in a CDI bean or EJB like this:

    @PersistenceContext(unitName = "my_persistence_unit")
    private EntityManager em;
    

    Final Notes

    Hibernate versions 4.3+

    I am using Hibernate 4.2.21 (JPA 2.0, Java EE 6) along with TomEE 1.7.2. Any TomEE 1.7.x, 1.6.x and 1.5.x will work. However, you cannot use Hibernate 4.3+ (JPA 2.1 / Java EE 7), as TomEE 1.7.x and below only support Java EE 6. If you really want to use Java EE 7 features along with TomEE, this blog post might be helpful: http://rmannibucau.wordpress.com/2013/07/19/little-tip-to-help-you-to-test-javaee-7-in-tomee-with-tomee-maven-plugin/

    TomEE 1.5.x

    TomEE 1.5.x already includes a javassist-.jar, so you don't have to copy one.

提交回复
热议问题