IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Prise en charge de la configuration JPA (2.1) par Spring (5) [Framework]


Sujet :

Spring Java

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 82
    Points
    82
    Par défaut Prise en charge de la configuration JPA (2.1) par Spring (5)
    Bonjour à tous.

    Je me fais une application Spring 5 et JPA 2 qui fonctionne très bien pour l'instant.
    Actuellement ma configuration JPA est dans le fichier persitence.xml et Spring dans son propre fichier.
    J'ai configuré ma datasource dans Spring car j'utilise son transaction manager.

    Important : je n'utilise ni spring boot, ni une configuration de spring en java, ni ne souhaite passer par le framework Spring JPA car le but est surtout de me (re)familiariser avec les requêtes JPQL et les criterias

    J'ai cherché dans les doc Spring et je ne trouve pas du tout comment je peux faire pour me passer du fichier persistence.xml bien que cette fonctionnalité était offerte avec les anciennes version de Spring.
    Alors voila si quelqu'un peu me conseiller des ressources actualisées pour cette version de Spring ou me dire comment faire, je lui en serai très reconnaissant.

    Je vous joins également mes fichiers de persistence et spring

    persistence.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" 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_2_0.xsd">
      <persistence-unit name="persistenceUnitTest" transaction-type="RESOURCE_LOCAL">
        <description>
                Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
            </description>
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>com.entities.Configuration</class>
        <class>com.entities.ConfigurationCategory</class>
        <class>com.entities.Profile</class>
        <class>com.entities.ProfileCategory</class>
        <class>com.entities.Right</class>
        <class>com.entities.RightCategory</class>
        <class>com.entities.UserAccount</class>
        <properties>
          <property name="javax.persistence.schema-generation.database.action" value="create"/>
          <property name="javax.persistence.sql-load-script-source" value="sql/db-insert.sql"/>
          <property name="hibernate.show_sql" value="true"/>
          <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
      </persistence-unit>
    </persistence>
    Fichier de properties Spring
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    javax.persistence.jdbc.url=jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE
    javax.persistence.jdbc.driver=org.h2.Driver
    javax.persistence.jdbc.user=sa
    javax.persistence.jdbc.password=
    Fichier Spring
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:jdbc="http://www.springframework.org/schema/jdbc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/context/spring-context.xsd
                    http://www.springframework.org/schema/tx
                    http://www.springframework.org/schema/tx/spring-tx.xsd
                    http://www.springframework.org/schema/jdbc
                    http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
     
        <context:annotation-config/>
        <context:component-scan base-package="com" />
     
        <context:property-placeholder location="jpa.properties"/>
        <bean id="dataSourceTest" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${javax.persistence.jdbc.driver}"/>
            <property name="url" value="${javax.persistence.jdbc.url}"/>
            <property name="username" value="${javax.persistence.jdbc.user}"/>
            <property name="password" value="${javax.persistence.jdbc.password}"/>
        </bean>
     
        <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
        <bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSourceTest"/>
            <property name="persistenceUnitName" value="persistenceUnitTest"/>
        </bean>
     
        <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
        <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="dataSource" ref="dataSourceTest"/>
        </bean>
    </beans>

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Il faut une classe annotée @Configuration dans laquelle vous définissez les objects JPA via des méthodes annotées @Bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    @Bean
    public class PersistenceConfig
    {
     
    @Value("...")
    ... définissez toutes les valeurs que vous voulez voir injecter de vos .properties...
     
     
     
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ...
    c'est dans celle-ci que vous définirez les JPA Properties
     
     
    @Bean
    public JpaVendorAdapter jpaVendorAdapter() ...
     
     
    @Bean(destroyMethod = "")
    public DataSource dataSource() throws ...
     
     
    @Bean
    public PlatformTransactionManager transactionManager() ...
     
     
    @Bean
    public PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
         return new PersistenceExceptionTranslationPostProcessor();
    }
     
    etc.

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 82
    Points
    82
    Par défaut
    Merci JeitEmgie de votre réponse

    Effectivement votre réponse va dans le sens de mes observations à savoir que Spring dans sa dernière version privilégie beaucoup plus la configuration par classe que par fichier.
    Je pense que ce que je souhaite faire est plus à actualiser et quand je vois spring JPA, de nombreux exemples sont en Java.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2014, 20h17
  2. Réponses: 2
    Dernier message: 01/12/2009, 19h45
  3. (eclipse,jpa) prise en charge d'hibernate dans eclipse
    Par olivier57b dans le forum Hibernate
    Réponses: 0
    Dernier message: 23/07/2009, 12h01
  4. Prise en charge multilingue sur le portal
    Par nic211 dans le forum Oracle
    Réponses: 4
    Dernier message: 07/07/2004, 14h43
  5. [SQL Serveur] prise en charge de l'arabe
    Par lamiae18 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/03/2004, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo