Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung des ORM-Modulcodes von Spring

Detaillierte Erläuterung des ORM-Modulcodes von Spring

小云云
小云云Original
2017-12-05 11:40:502131Durchsuche

ORM Object-Relational Mapping ist eine Programmiertechnologie, die zum Konvertieren von Daten zwischen verschiedenen Systemtypen in objektorientierten Programmiersprachen verwendet wird. Tatsächlich wird dadurch eine „virtuelle Objektdatenbank“ erstellt, die in einer Programmiersprache verwendet werden kann. In diesem Artikel wird hauptsächlich der ORM-Modulcode von Spring ausführlich erläutert, der einen bestimmten Referenzwert hat. Freunde, die ihn benötigen, können mehr erfahren.

Eine kurze Einführung in die sieben Hauptmodule des Spring-Frameworks

Detaillierte Erläuterung des MVC-Modulcodes in Spring

ORM-Modul ist sehr nützlich für Hibernate, JDO, TopLinkiBatis und andere ORM-Frameworks bieten Unterstützung

ORM-Module basieren auf dom4j.jar, antlr.jar und anderen Paketen

Im Frühjahr müssen Hibernate-Ressourcen vorhanden sein Spring ist eine spezielle Bean, die von Spring, Hibernate und seiner SessionFactory sowie anderen Wissensdatenbanken verwaltet wird. Spring ist für die Instanziierung und Zerstörung verantwortlich. Daher muss die DAO-Schicht nur HibernateDaoSupport erben und sich nicht mit der API von Hibernate befassen. Sie muss die Sitzung und Transaktion von Hibernate nicht öffnen oder schließen >

public interface ICatDao{ 
   public void createCat(Cat cat); 
   public List<Cat> listCats(); 
   public int getCatsCount(); 
   public Cat findCatByName(String name); 
}

import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
public class CatDaoImpl extends HibernateDaoSupportimplements ICatDao{ 
   public void createCat(Cat cat){ 
       this.getHibernateTemplate().persist(cat); 
   } 
   public List<Cat> listCats(){ 
       return this. getHibernateTemplate().find("select cfrom Cat c"); 
   } 
   public int getCatsCount(){ 
       Number n = (Number)this.getSession(true).createQuery("selectcount(c) from Cat c").uniqueResult(); 
       return n.intValue(); 
   } 
   public Cat findCatByName(String name){ 
       List<Cat> catList =this.getHibernateTemplate().find("select c from Cat where c.name = ?",name); 
       if(catList.size()>0) 
          return catList.get(0); 
       return null; 
   } 
  
}

Wenn Sie XML-konfigurierte Entitätsklassen verwenden, wechseln Sie zu
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" destroy-method="destroy"> 
<property name="dataSource" ref="dataSource" /> 
<!-- 该Package下的所有类都会被当做实体类加载--> 
<property name="annotatedPackages" value="classpath:/com/clf/orm" /> 
<property name="anotatedClasses"> 
   <list> 
       <value>com.clf.spring.orm.Cat</value> 
       <value>com.clf.spring.orm.Dog</value> 
   </list> 
<property name="hibernateProperties"> 
   <props> 
       <prop key="hiberante.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key=" hibernate.format_sql">true</prop> 
       <prop key=" hibernate.hbm2ddl.auto">create</prop> 
   </props> 
</property> 
  
<bean id="catDao" class="com.clf.spring.orm.CatDaoImpl"> 
   <property name="sessionFactory" ref=" sessionFactory"/> 
</bean>

Spring fügt standardmäßig Transaktionen zur DAO-Schicht hinzu, und jede Methode der DAO-Schicht ist eine Transaktion. Bei der Spring+Hibernate-Programmierung besteht der übliche Ansatz darin, eine Service-Schicht über der DAO-Schicht hinzuzufügen und dann die Transaktion in der Service-Schicht zu konfigurieren
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method="destroy"> 
<property name="mappingResources"> 
   <list> 
       <value>classpath:/com/clf/orm/Cat.hbm.xml</value> 
   </list> 
</property> 
…… 
</bean>

Layered Die Methode besteht darin, dass das Programm die Service-Schicht aufruft, die Service-Schicht die DAO-Schicht aufruft und die DAO-Schicht den Ruhezustand aufruft, um den Datenzugriff zu implementieren. Grundsätzlich ist kein Querzugriff zulässig. Durch die Schichtung wird die Geschäftsebene klarer
public interface ICatService{ 
   public void createCat(Cat cat); 
   public List<Cat> listCats();  
   public int getCatsCount(); 
}

Dann konfigurieren Sie die Transaktionsverwaltung auf der Serviceebene
public class CatServiceImpl implements ICatService{ 
   private IDao catDao; 
   public IDao getCatDao(){ 
       return catDao; 
   } 
  
   public void setCatDao(IDao dao){ 
       this.catDao = dao; 
   } 
    
   public void createCat(Cat cat){ 
       catDao.createCat(cat); 
   } 
   public List<Cat> listCats(){ 
       return catDao.listCats(); 
   } 
   public int getCatsCount(){ 
       return catDao.getCatsCount(); 
   } 
  
}

Der obige Inhalt ist eine detaillierte Erklärung des ORM-Modulcodes von Spring. Ich hoffe, er kann allen helfen.
<!-- 事务管理器--> 
<bean id="hibernateTransactionManager" class=" org.springframework.orm.hibernate3.HibernateTransactionManager 
"> 
   <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 
  
<!-- 事务管理规则--> 
<bean id="hibernateTransactionAttributeSource" class=" org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> 
   <property name="properties"> 
       <props><!-- 为所有方法加上事务--> 
          <propkeypropkey="*">PROPGATION_REQUIRED</prop> 
   </property> 
</bean> 
  
<!-- 事务工厂代理类,将Service实现类、事务管理器、事务管理规则组装在一起--> 
<bean id="catService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
   <property name="transactionManager" ref=" hibernateTransactionManager"> 
   <property name="target"> 
       <bean class="com.clf.spring.orm.CatServiceImpl" > 
          <property name="catDao" ref="catDao"/> 
       </bean> 
   </property> 
   <property name="transactionAttributeSource" ref=" hibernateTransactionAttributeSource" /> 
</bean>

Verwandte Empfehlungen:

Vorteile des Spring-Frameworks im Java-Framework

Detaillierte Erklärung von SpringAop in Java

Eine kurze Einführung in Spring MVC

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des ORM-Modulcodes von Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn