English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
L'API Spring Data JPA fornisce la classe JpaTemplate per integrare l'applicazione Spring con JPA.
JPA (Java Persistence API) è una specifica di Sun utilizzata per memorizzare permanentemente oggetti in applicazioni aziendali. Attualmente, viene utilizzato come sostituto per bean entity complessi.
Molti fornitori offrono implementazioni della specifica JPA, ad esempio:
Hibernate Toplink iBatis OpenJPA e altri.
Non è necessario scrivere codice anteriore e successivo per persistere, aggiornare, eliminare o cercare oggetti, ad esempio creare un'istanza di Persistence, creare un'istanza di EntityManagerFactory, creare un'istanza di EntityTransaction, creare un'istanza di EntityManager, committere un'istanza di EntityTransaction e chiudere EntityManager.
Pertanto, è Ha risparmiato molto codice。
In questo esempio, utilizzeremo il modello Hibernate per implementare JPA.
Ecco i semplici passaggi per integrare l'applicazione Spring con JPA:
Creare il file Account.java Creare il file Account.xml Creare il file AccountDao.java Creare il file persistence.xml Creare il file applicationContext.xml Creare il file AccountsClient.java
In questo esempio, integreremo l'applicazione Hibernate con Spring. Vediamo un esempio di jpa con Spring Struttura del catalogo。
1、Account.java
Questa è una semplice classe POJO.
package com.w3codebox; public class Account { private int accountNumber; private String owner; private double balance; //costruttore senza argomenti e parametrizzato //getter e setter }
Questa mappatura file contiene tutte le informazioni delle classi persistenti.
<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"> <entity class="com.w3codebox.Account"> <table name="account100"></table> <attributes> <id name="accountNumber"> <column name="accountnumber"/> </id> <basic name="owner"> <column name="owner"/> </basic> <basic name="balance"> <column name="balance"/> </basic> </attributes> </entity> </entity-mappings>
3、AccountDao.java
package com.w3codebox; import java.util.List; import org.springframework.orm.jpa.JpaTemplate; import org.springframework.transaction.annotation.Transactional; @Transactional public class AccountsDao { JpaTemplate template; public void setTemplate(JpaTemplate template) { this.template = template; } public void createAccount(int accountNumber, String owner, double balance) { Account account = new Account(accountNumber, owner, balance); template.persist(account); } public void updateBalance(int accountNumber, double newBalance) { Account account = template.find(Account.class, accountNumber); if (account != null) { account.setBalance(newBalance); } template.merge(account); } public void deleteAccount(int accountNumber) { Account account = template.find(Account.class, accountNumber); if (account != null) template.remove(account); } public List<Account> getAllAccounts() { List<Account> accounts = template.find("select acc from Account acc"); return accounts; } }
4、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="ForAccountsDB"> <mapping-file>com/w3codebox/Account.xml</mapping-file> <class>com.w3codebox.Account</class> </persistence-unit> </persistence>
5、applicationContext.xml
<?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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <tx:annotation-driven transaction-manager="jpaTxnManagerBean" proxy-target-class="true"/> <bean id="dataSourceBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property> <property name="username" value="system"></property> <property name="password" value="oracle"></property> </bean> <bean id="hbAdapterBean" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true"></property> <property name="generateDdl" value="true"></property> <property name="databasePlatform" value="org.hibernate.dialect.OracleDialect"></property> </bean> <bean id="emfBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSourceBean"></property> <property name="jpaVendorAdapter" ref="hbAdapterBean"></property> </bean> <bean id="jpaTemplateBean" class="org.springframework.orm.jpa.JpaTemplate"> <property name="entityManagerFactory" ref="emfBean"></property> </bean> <bean id="accountsDaoBean" class="com.w3codebox.AccountsDao"> <property name="template" ref="jpaTemplateBean"></property> </bean> <bean id="jpaTxnManagerBean" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="emfBean"></property> </bean> </beans>
generateDdl Le proprietà creeranno automaticamente la tabella.
showSql Le proprietà verranno visualizzate sul terminale le query SQL.
6、Accountsclient.java
package com.w3codebox; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class AccountsClient{ public static void main(String[] args){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); AccountsDao accountsDao = context.getBean("accountsDaoBean", AccountsDao.class); accountsDao.createAccount(15, "Jai Kumar", 41000); accountsDao.createAccount(20, "Rishi ", 35000); System.out.println("Conti creati"); //accountsDao.updateBalance(20, 50000); //System.out.println("Account bilancio aggiornato"); /*List<Account> accounts = accountsDao.getAllAccounts(); for (int i = 0; i < accounts.size(); i++) { Account acc = accounts.get(i); System.out.println(acc.getAccountNumber() + " : " + acc.getOwner() + " (" + acc.getBalance() + ")"); */ //accountsDao.deleteAccount(111); //System.out.println("Account cancellato"); } }
Output
Hibernate: insert into account100 (balance, owner, accountnumber) values (?, ?, ?) Hibernate: insert into account100 (balance, owner, accountnumber) values (?, ?, ?) Conti creati