欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

Hibernate中通过annotaion配置SQLServer的存储过程

发布时间:2025/7/14 数据库 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Hibernate中通过annotaion配置SQLServer的存储过程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

为什么80%的码农都做不了架构师?>>>   

环境:hibernate 3.3.1 +spring 2.5.6+ sql server 2005

 

首先,上spring的hibernate配置

 

<bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"p:dataSource-ref="dataSource"><property name="hibernateProperties"><props><!-- SQLServer DIALECT --><prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><property name="annotatedClasses"><list><value>com.bean.Contact</value></list></property></bean>

 

这里没有使用自动搜索·通过下面代码配置实例化类·

<property name="annotatedClasses"><list><value>com.bean.Contact</value></list> </property>

 下一步 Contact类代码:

import javax.persistence.Entity; import javax.persistence.EntityResult; import javax.persistence.NamedNativeQuery; import javax.persistence.SqlResultSetMapping;@Entity @SqlResultSetMapping(name = "ContactMapping", entities = @EntityResult(entityClass = Contact.class)) @NamedNativeQuery(name = "ContactQuery", query = "{call GetContact(?,?)}", resultSetMapping = "ContactMapping") public class Contact{...........}

 其中:

 

     1 ContactQuery是可执行的查询名字·以后要在getNamedQuery()方法中用到·

     2 ContactMapping是执行结果集和类的对应表,这里结果集的列名和类的属性名一致·所以就隐含设置了·

     3 {call GetContact(?,?)} ·GetContact是存储过程的名字·(?,?)是指有两个参数

     4 注意上面的引用包·用hibernate的包会出错·

 

  再来看看DAO类的代码:

 

Query query = getSession().getNamedQuery("ContactQuery"); query.setString(0, ID); query.setString(1, date); List<Contact> ContactList= query.list();

 其中:

 

1 getSession().getNamedQuery("ContactQuery")调用的就是在annotation里定义的名子

2 通过query.setString()设置存储过程的参数

 

PS:在网上查资料时看到有说这存储过程是必须要有返回结果集的·

转载于:https://my.oschina.net/piorcn/blog/310543

总结

以上是生活随笔为你收集整理的Hibernate中通过annotaion配置SQLServer的存储过程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。