English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die Spring Data JPA API bietet die Klasse JpaTemplate, um Spring-Anwendungen mit JPA zu integrieren.
JPA (Java Persistence API) ist eine von Sun spezifizierte Norm zur Persistenz von Objekten in Unternehmensanwendungen. Derzeit wird es als Ersatz für komplexe Entity-Beans verwendet.
Viele Anbieter bieten Implementierungen der JPA-Spezifikation an, z.B.:
Hibernate Toplink iBatis OpenJPA usw.
Sie müssen keine vor- und nachgelagerten Codes schreiben, um Objekte zu persistieren, zu aktualisieren, zu löschen oder zu suchen, z.B. Persistence-Instanzen zu erstellen, EntityManagerFactory-Instanzen zu erstellen, EntityTransaction-Instanzen zu erstellen, EntityManager-Instanzen zu erstellen, EntityTransaction-Instanzen zu submitting und EntityManager zu schließen.
Daher Es hat viel Code eingespart。
In diesem Beispiel werden wir den Hibernate-Modus verwenden, um JPA zu implementieren.
Lassen Sie uns die einfachen Schritte zur Integration von Spring-Anwendungen mit JPA betrachten:
Erstellen Sie die Datei Account.java Erstellen Sie die Datei Account.xml Erstellen Sie die Datei AccountDao.java Erstellen Sie die Datei persistence.xml Erstellen Sie die Datei applicationContext.xml Erstellen Sie die Datei AccountsClient.java
在此示例中,我们将把休眠应用程序与spring集成在一起。让我们看看带有spring的jpa示例的 目录结构。
1、Account.java
这是一个简单的POJO类。
package com.w3codebox; public class Account { private int accountNumber; private String owner; private double balance; //no-arg and parameterized constructor //getters and setters }
此映射文件包含持久类的所有信息。
<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 Eigenschaften werden automatisch Tabellen erstellen.
showSql Eigenschaften werden auf der Konsole die SQL-Abfragen anzeigt.
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("Konten erstellt"); //accountsDao.updateBalance(20, 50000); //System.out.println("KontoSaldo aktualisiert"); /*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("Konto gelöscht"); } }
Ausgabe
Hibernate: insert into account100 (Betrag, Eigentümer, Kontonummer) Werte (?, ?, ?) Hibernate: insert into account100 (Betrag, Eigentümer, Kontonummer) Werte (?, ?, ?) Konten erstellt