第一范文网 - 专业文章范例文档资料分享平台

jpatemplate

来源:用户分享 时间:2025/11/17 7:50:18 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

7. return (Collection) this.jpaTemplate.execute(new JpaCallback() {

8. public Object doInJpa(EntityManager em) throws PersistenceException {

9. Query query = em.createQuery(\y = :category\

10.query.setParameter(\11.List result = query.getResultList();

12.// do some further processing with the result list 13.return result; 14.} 15.}); 16.} 17.}

nick.s.ni 写道

spring 3已經不推薦使用JpaTemplate。

那看下spring 2.5.5中使用JpaTemplate的方式 第一種,使用JpaTemplate Java代码

1.

2. 5.

Java代码

1. public class JpaProductDao implements ProductDao { 2. private JpaTemplate jpaTemplate;

3. public void setEntityManagerFactory(EntityManagerFactory emf) {

4. this.jpaTemplate = new JpaTemplate(emf); 5. }

6. public Collection loadProductsByCategory(final String category) throws DataAccessException {

7. return (Collection) this.jpaTemplate.execute(new JpaCallback() {

8. public Object doInJpa(EntityManager em) throws PersistenceException {

9. Query query = em.createQuery(\y = :category\

10.query.setParameter(\11.List result = query.getResultList();

12.// do some further processing with the result list 13.return result; 14.} 15.}); 16.} 17.}

第二種

繼承JpaDaoSupport Java代码

1. public class ProductDaoImpl extends JpaDaoSupport implements ProductDao {

2. public Collection loadProductsByCategory(String category) throws DataAccessException {

3. Map params = new HashMap(); 4. params.put(\

5. return getJpaTemplate().findByNamedParams(\ere p.category = :category\6. } 7. }

JpaDaoSupport中需要注入EMF,而EM是內部創建的 Java代码

1. protected EntityManager createEntityManager() throws IllegalStateException {

2. EntityManagerFactory emf = getEntityManagerFactory(); 3. Assert.state(emf != null, \ified\

4. Map properties = getJpaPropertyMap(); 5. return (!CollectionUtils.isEmpty(properties) ? emf.createEntityManager(properties) : emf.createEntityManager()); 6. }

這不是代碼問題是使用問題,每個DAO都有一個EM,EM中有一定的數據緩存,根據EM的實現,對數據庫中的新增數據會更新,對修改后的數據在查詢時不會更新。

例如一個DAO進行連表查詢,另一個DAO中進行子表的CRUD,修改的信息在查詢中不會更新的。

第二種

繼承JpaDaoSupport Java代码

1. public class ProductDaoImpl extends JpaDaoSupport implements ProductDao {

2. public Collection loadProductsByCategory(String category) throws DataAccessException {

3. Map params = new HashMap(); 4. params.put(\

5. return getJpaTemplate().findByNamedParams(\ere p.category = :category\6. } 7. }

JpaDaoSupport中需要注入EMF,而EM是內部創建的 Java代码

1. protected EntityManager createEntityManager() throws IllegalStateException {

2. EntityManagerFactory emf = getEntityManagerFactory(); 3. Assert.state(emf != null, \ified\

4. Map properties = getJpaPropertyMap(); 5. return (!CollectionUtils.isEmpty(properties) ? emf.createEntityManager(properties) : emf.createEntityManager()); 6. }

這不是代碼問題是使用問題,每個DAO都有一個EM,EM中有一定的數據緩存,根據EM的實現,對數據庫中的新增數據會更新,對修改后的數據在查詢時不會更新。

例如一個DAO進行連表查詢,另一個DAO中進行子表的CRUD,修改的信息在查

詢中不會更新的。

這不是代碼問題是使用問題,每個DAO都有一個EM(这个如果是spring管理事务的,不是每个DAO一个,而是一个事务一个),EM中有一定的數據緩存(一级缓存),根據EM的實現,對數據庫中的新增數據會更新,對修改后的數據在查詢時不會更新(你这个查询是 修改之前?还是修改之后?(修改会自动清除二级缓存的,再次查询返回最新的数据))。

能否把您的用例发过来研究下 什么问题 admin@sishuok.com 1 楼 nick.s.ni 2012-03-23

JPA的實現我用的是EclipseLink(TopLink)實現,不會跟Hibernate混淆。你這篇應該直接提供 Java代码

1. public class ProductDaoImpl implements ProductDao { 2. @PersistenceContext

3. private EntityManager em;

4. public Collection loadProductsByCategory(String category) { 5. Query query = em.createQuery(\y = :category\

6. query.setParameter(\7. return query.getResultList(); 8. } 9. }

其他的刪掉或是一句話帶過就好。

发表评论

您还没有登录,请您登录后再发表评论

jinnianshilongnian

搜索更多关于: jpatemplate 的文档
jpatemplate.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2vpvz449sp371qz5cnnl_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top