Spring, Hibernate és egy JNDI adatforrás

1. Áttekintés

Ebben a cikkben létrehozunk egy Spring alkalmazást a Hibernate / JPA használatával, JNDI adatforrással.

Ha újra szeretné felfedezni a Tavasz és a Hibernálás alapjait, nézze meg ezt a cikket.

2. Az adatforrás deklarálása

2.1. Rendszer

Mivel JNDI adatforrást használunk, nem az alkalmazásunkban fogjuk meghatározni, hanem az alkalmazás tárolójában.

Ebben a példában a Tomcat 8.5.x verzióját és a PostgreSQL adatbázis 9.5.x verzióját fogjuk használni.

Képesnek kell lennie arra, hogy ugyanazokat a lépéseket megismételje bármely más Java alkalmazás-tárolóval és egy választott adatbázissal (mindaddig, amíg megfelelő JDBC edények vannak hozzá!).

2.2. Az adatforrás deklarálása az alkalmazástárolón

Nyilatkozunk az adatforrásunkról / conf /server.xml fájl a elem.

Feltéve, hogy az adatbázis-kiszolgáló ugyanazon a gépen fut, mint az alkalmazás-tároló, és hogy a tervezett adatbázis meg van nevezve postgres, és hogy a felhasználónév az baeldung jelszóval pass1234, egy erőforrás a következőképpen nézne ki:

Vegye figyelembe, hogy megneveztük az erőforrásunkat jdbc / BaeldungDatabase. Ezt a nevet kell használni az adatforrás hivatkozásakor.

Meg kellett adnunk a típusát és az adatbázis-illesztőprogram osztálynevét is. Ahhoz, hogy működjön, be kell helyeznie a megfelelő edényt is / lib / (ebben az esetben a PostgreSQL JDBC tégelye).

A fennmaradó konfigurációs paraméterek a következők:

  • auth = ”Konténer” - azt jelenti, hogy a tároló bejelentkezik az erőforrás-kezelőbe az alkalmazás nevében
  • maxTotal, maxIdle, és maxWaitMillis - a pool kapcsolat konfigurációs paraméterei

Meg kell határoznunk a ResourceLink benne elem be / conf / context.xml, ami a következőképpen nézne ki:

Vegye figyelembe, hogy a nevünkben definiált nevet használjuk Forrás ban ben server.xml.

3. Az erőforrás használata

3.1. Az alkalmazás beállítása

Meg fogunk definiálni egy egyszerű Spring + JPA + Hibernate alkalmazást tiszta Java konfigurációval.

Először meghatározzuk a Spring kontextus konfigurációját (ne feledje, hogy itt a JNDI-re koncentrálunk, és feltételezzük, hogy Ön már ismeri a Spring konfigurálásának alapjait):

@Configuration @EnableTransactionManagement @PropertySource ("classpath: persistence-jndi.properties") @ComponentScan ("com.baeldung.hibernate.cache") @EnableJpaRepositories (basePackages = "com.baeldung.hibernate.cacheICon.doc") {@Autowired private Environment env; @Bean public LocalContainerEntityManagerFactoryBean entitásManagerFactory () dobja a NamingException {LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean (); em.setDataSource (dataSource ()); // az entitáskezelő konfigurációjának többi része return em; } @Bean public DataSource dataSource () dobja a NamingException {return (DataSource) új JndiTemplate (). Lookup (env.getProperty ("jdbc.url")); } @Bean public PlatformTransactionManager tranzakciókezelő (EntityManagerFactory emf) {JpaTransactionManager tranzakcióManager = új JpaTransactionManager (); tranzakcióManager.setEntityManagerFactory (emf); visszatérési tranzakcióManager; } // a perzisztencia többi része}

Ne feledje, hogy a konfigurációról egy teljes példa található a Spring 4 és a JPA with Hibernate cikkben.

Annak érdekében, hogy megteremtsük adatforrás bab, meg kell keresnünk azt a JNDI-erőforrást, amelyet az alkalmazás-tárolónkban definiáltunk. Ezt tároljuk kitartás-jndi.tulajdonságok kulcs (egyéb tulajdonságok mellett):

jdbc.url = java: comp / env / jdbc / BaeldungDatabase

Vegye figyelembe, hogy a jdbc.url tulajdonság meghatározzuk a keresendő gyökér nevet: java: comp / env / (ezek az alapértelmezések, és megfelelnek az összetevőnek és a környezetnek), majd ugyanaz a név, amelyet használtunk server.xml: jdbc / BaeldungDatabase.

3.2. JPA konfiguráció - modell, DAO és szolgáltatás

Egyszerű modellt fogunk használni a @Entity annotáció egy generált id és a név:

@Entity public class Foo {@Id @GeneratedValue (strategy = GenerationType.AUTO) @Column (name = "ID") private Long id; @Column (name = "NAME") privát karakterlánc neve; // alapértelmezett getterek és beállítók}

Definiáljunk egy egyszerű adattárat:

@Repository public class FooDao {@PersistenceContext private EntityManager entityManager; public List findAll () {return entitásManager .createQuery ("from" + Foo.class.getName ()). getResultList (); }}

Végül hozzunk létre egy egyszerű szolgáltatást:

@Service @Transactionional public class FooService {@Autowired private FooDao dao; public List findAll () {return dao.findAll (); }}

Ezzel minden megvan, amire szüksége van ahhoz, hogy tavaszi alkalmazásában felhasználhassa JNDI adatforrását.

4. Következtetés

Ebben a cikkben létrehoztunk egy példa Spring alkalmazást JPA + Hibernate beállítással, amely JNDI adatforrással dolgozik.

Ne feledje, hogy a legfontosabb részek az erőforrás meghatározása az alkalmazás tárolójában és a JNDI erőforrás keresése a konfiguráción.

És mint mindig, a teljes projekt megtalálható a GitHubon.