English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wir können Hibernate-Anwendungen einfach mit Spring-Anwendungen integrieren.
Im Hibernate-Framework bieten wir alle Funktionalitäten der Datenbankinformationen in der Datei hibernate.cfg.xml an.
Aber wenn wir Hibernate-Anwendungen mit Spring integrieren möchten, müssen wir keine Datei hibernate.cfg.xml erstellen. Wir können alle Informationen in der Datei applicationContext.xml bereitstellen.
Spring框架提供了 HibernateTemplate 类,因此您无需执行太多步骤,例如创建Configuration,BuildSessionFactory,Session,开始和提交事务等。
因此 它节省了大量代码。
不使用spring的理解问题:
下面的休眠代码让我们理解它:
//创建配置 Configuration cfg=new Configuration(); cfg.configure("hibernate.cfg.xml"); //创建seession factory对象 SessionFactory factory=cfg.buildSessionFactory(); //创建 session object Session session=factory.openSession(); //创建 transaction object Transaction t=session.beginTransaction(); Employee e1=new Employee(111,"arun",40000); session.persist(e1);//persisting the object t.commit();//事务提交 session.close();
正如您在唯一的hibernate代码中所看到的,您必须遵循许多步骤。
使用Spring Framework的HibernateTemplate类的解决方案:
现在,您无需执行太多步骤。您可以简单地这样写:
Employee e1=new Employee(111,"arun",40000); hibernateTemplate.save(e1);
我们来看看HibernateTemplate类的常用方法列表。
方法 | 说明 |
void persist(Object entity) | 坚持给定的对象。 |
Serializable save(Object entity) | 保留给定对象并返回ID。 |
void saveOrUpdate(Object entity) | 持久或更新给定的对象。如果找到id,它将更新记录,否则保存记录。 |
void update(Object entity) | Aktualisiert das angegebene Objekt. |
void delete(Object entity) | Gibt das angegebene Objekt mit der id zurück. |
Object get(Class entityClass, Serializable id) | Gibt das Persistenzobjekt zurück, das dem gegebenen id entspricht. |
Object load(Class entityClass, Serializable id) | Gibt das Persistenzobjekt zurück, das dem gegebenen id entspricht. |
List loadAll(Class entityClass) | Ruft alle Persistenzobjekte zurück. |
Lassen Sie uns die einfachen Schritte der Integration von Hibernate und Spring betrachten:
Tisch in der Datenbank erstellen。 Dies ist optional. Erstellen Sie die Datei applicationContext.xml。 Es enthält Informationen wie DataSource, SessionFactory usw. Erstellen Sie die Datei Employee.java。 Dies ist die Persistenzklasse Erstellen Sie die Datei employee.hbm.xml。 Es ist die Mapping-Datei. Erstellen Sie die Datei EmployeeDao.java。 Es ist eine DAO-Klasse, die HibernateTemplate verwendet. Erstellen Sie die Datei InsertTest.java。 Es wird die Methode der EmployeeDao-Klasse aufrufen.
In diesem Beispiel werden wir die Hibernate-Anwendung mit Spring integrieren. Lassen Sie uns die Beispiele für die Integration von Spring und Hibernate betrachten. Verzeichnisstruktur。
1、Tisch in der Datenbank erstellen
In diesem Beispiel verwenden wir Oracle als Datenbank, aber Sie können jede Datenbank verwenden. Lassen Sie uns in der Oracle-Datenbank einen Tisch erstellen
CREATE TABLE "EMP558" ( "ID" NUMBER(10,0) NOT null ENABLE, "NAME" VARCHAR2(255 CHAR), "SALARY" float(126), PRIMARY KEY ("ID") ENABLE ) /
2、Employee.java
Dies ist eine einfache POJO-Klasse. Hier wird sie als Hibernate-Persistenzklasse verwendet.
package com.w;3codebox; public class Employee { private int id; private String name; private float salary; //Getter und Setter }
3、employee.hbm.xml
Diese Mapping-Datei enthält alle Informationen der Persistenzklasse.
<?xml version='1.0' encoding='UTF'-8?> !DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.w3codebox.Employee" table="emp558> <id name="id"> <generator class="assigned"></generator> </id> <property name="name"></property> <property name="salary"></property> </class> </hibernate-mapping>
4、EmployeeDao.java
Dies ist eine Verwendung HibernateTemplate Java-Klasse zum Persistieren von Objekten der Klasse Employee.
package com.w;3codebox; import org.springframework.orm.hibernate3.HibernateTemplate; import java.util.*; public class EmployeeDao { HibernateTemplate template; public void setTemplate(HibernateTemplate template) { this.template = template; } //Methode zum Speichern des Mitarbeiters public void saveEmployee(Employee e) { template.save(e); } //Methode zum Aktualisieren des Mitarbeiters public void updateEmployee(Employee e) { template.update(e); } //Methode zum Löschen des Mitarbeiters public void deleteEmployee(Employee e) { template.delete(e); } //Die Methode gibt einen Mitarbeiter mit der gegebenen id zurück public Employee getById(int id) { Employee e = (Employee)template.get(Employee.class, id); return e; } //Methode zum Zurückgeben aller Mitarbeiter public List<Employee> getEmployees() List<Employee> list = new ArrayList<Employee>(); list = template.loadAll(Employee.class); return list; } }
5, applicationContext.xml
In dieser Datei BasicDataSource Objekt alle Informationen der Datenbank bereitstellt. Dieses Objekt wird verwendet LocalSessionFactoryBean Klasse, die einige andere Informationen enthält, wie z.B. mappingResources und hibernateProperties. LocalSessionFactoryBean Objekte der Klasse HibernateTemplate werden verwendet. Lassen Sie uns den Code der Datei applicationContext.xml betrachten.
Datei: 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:p="http://www.springframework.org/schema/p xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <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="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mappingResources"> <list> <value>employee.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle<9Dialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="mysessionFactory"></property> </bean> <bean id="d" class="com.w3codebox.EmployeeDao"> <property name="template" ref="template"></property> </bean> </beans>
6、InsertTest.java
Diese Klasse verwendet das Objekt der Klasse EmployeeDao und ruft die Methode saveEmployee auf, indem ein Objekt der Klasse Employee übergeben wird.
package com.w;3codebox; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class InsertTest { public static void main(String[] args) { Resource r = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(r); EmployeeDao dao = (EmployeeDao)factory.getBean("d"); Employee e = new Employee(); e.setId(114); e.setName("varun"); e.setSalary(50000); dao.saveEmployee(e); } }
Wenn Sie in der Oracle-Datenbank diese Tabelle sehen, wurde der Eintrag erfolgreich eingefügt.
Sie können Hibernate-Attribute im applicationContext.xml-Datei aktivieren, z.B. durch hbm2ddl.auto und andere für die automatische Tabellenerstellung. Lassen Sie uns den Code betrachten:
<property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle<9Dialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> </props>
Wenn Sie diesen Code schreiben, müssen Sie keine Tabelle erstellen, da sie automatisch erstellt wird.