您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Spring之ORM模块代码详解

2024/5/17 2:06:08发布19次查看
orm对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 。从效果上说,它其实是创建了一个可在编程语言里使用的--虚拟对象数据库。这篇文章主要介绍了spring之orm模块代码详解,具有一定参考价值,需要的朋友可以了解下。
spring框架七大模块简单介绍
spring中mvc模块代码详解
orm模块对hibernate、jdo、toplinkibatis等orm框架提供支持
orm模块依赖于dom4j.jar、antlr.jar等包
在spring里,hibernate的资源要交给spring管理,hibernate以及其sessionfactory等知识spring一个特殊的bean,有spring负责实例化与销毁。因此dao层只需要继承hibernatedaosupport,而不需要与hibernate的api打交道,不需要开启、关闭hibernate的session、transaction,spring会自动维护这些对象
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; } }
<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>
如果使用xml配置的实体类,则改为
<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>
spring默认在dao层添加事务,dao层的每个方法为一个事务。spring+hibernate编程中,习惯的做法实在dao层上再添加一个service层,然后把事务配置在service层
public interface icatservice{ public void createcat(cat cat); public list<cat> listcats(); public int getcatscount(); }
分层的做法是,程序调用service层,service层调用dao层,dao层调用hibernate实现数据访问,原则上不允许跨曾访问。分层使业务层次更加清晰
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(); } }
然后再service层配置事务管理
<!-- 事务管理器--> <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>
以上内容就是spring之orm模块代码详解,希望能帮助到大家。
相关推荐:
java框架中spring框架的优点
java中关于springaop的详解
对spring mvc进行简单介绍
以上就是spring之orm模块代码详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product