博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring ORM与Hibernate的集成开发详解
阅读量:4177 次
发布时间:2019-05-26

本文共 2192 字,大约阅读时间需要 7 分钟。

在Java应用中,存在多种数据访问API,如JDBC、JPA、JDO和Hibernate等。

为了便于使用这些数据访问API进行应用开发,Spring框架提供了Spring DAO,其带来的优势如下:

  • 统一的应用接口
  • 统一的异常层次结构DataAccessException
  • 统一的资源标注@Repository
  • 统一的事务管理@Transactional

下面以Hibernate为例,介绍Spring DAO与Hibernate的集成开发过程。

1.数据访问的基本过程

1)在XML配置文件中声明dataSource

可以是通用的Jakarta Commons DBCP数据源org.apache.commons.dbcp.BasicDataSource

也可以是JNDI数据源<jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myds"/>

jndi-name="java:comp/env/jdbc/myds"/>
2)在XML配置文件中声明sessionFactory
org.springframework.orm.hibernate5.LocalSessionFactoryBean

product.hbm.xml
hibernate.dialect=org.hibernate.dialect.HSQLDialect
3)声明业务逻辑所需的DAO接口

4)Hibernate实现DAO接口,其中以Spring注入sessionFactory

public class ProductDaoImpl implements ProductDao {    private SessionFactory sessionFactory;    public void setSessionFactory(SessionFactory sessionFactory) {        this.sessionFactory = sessionFactory;    }}

2.声明式事务管理的基本过程

1)在XML配置文件中声明dataSource(参考前文)

2)在XML配置文件中声明Hibernate的sessionFactory(参考前文)

3)在XML配置文件中声明Hibernate的transactionManager

4)在XML配置文件中声明具体的事务操作,并引用transactionManager

5)在XML配置文件中声明事务的插入点

上述设置,将对com.jdsu.nc.portal.ProductService接口的实现类中的方法加入到事务中执行。具体事务的属性,依据方法的名称(在tx:advice中定义)确定。

3.编程式事务管理的基本过程

编程式事务中的前3步骤与声明式事务一样,请参考前文。

区别在于,对Hibernate的transactionManager的引用不是在XML配置文件中定义,而是直接在服务实现的Java类中,示例如下:

public class ProductServiceImpl implements ProductService {    private TransactionTemplate transactionTemplate;    private ProductDao productDao;    public void setTransactionManager(PlatformTransactionManager transactionManager) {        this.transactionTemplate = new TransactionTemplate(transactionManager);    }    public void setProductDao(ProductDao productDao) {        this.productDao = productDao;    }    ...}
Java类中引用的TransactionManager和ProductDao可以通过Spring注入:

转载地址:http://bjlai.baihongyu.com/

你可能感兴趣的文章
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
内核线程创建
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
C++程序员技术需求规划(发展方向)
查看>>
JNI
查看>>
Android 短信模块分析(七) MMS数据库定义及结构整理
查看>>
Android 短信模块分析(八) MMS数据库表关系
查看>>
Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
查看>>
Android 图标上面添加提醒(一)使用Canvas绘制
查看>>
Android WebView加载Html右边空白问题的解决方案
查看>>
Android 仿网易新闻v3.5:上下滑动的引导页
查看>>
Android 天气预报图文字幕垂直滚动效果
查看>>
Android硬件加速
查看>>