`

使用spring annotation,放弃template

阅读更多
从hibernate的annotation开始..我入迷了annotation...
annotation的褒贬之说就不管了..技多不压身嘛..再说了配置文件让我很烦啊..
compass也使用annotation了.
就还有web层与business层没有使用了..

spring annotation真好的满足要求..
先看好文:
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/
讲解了spring的annotation

使用相当简单
相关的annotation
---------------属性使用的annotation
@Autowired 这个跟xml中的autowire="byType"一样啦..
对于有多种type的时候.可以使用
@Qualifier("beanName")也指定..

@Resource与@Autowired一样,但是以byName自动注入的.

--------------bean使用的annotation
@Component
@Repository
@Service
@Controller
这个很明了,功能都差不多,只是可以帮助我们对应层使用

这些annotation的使用要在全局xml文件中声明下,类似于声明式事务..
引用
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <context:component-scan base-package="com.baobaotao"/>
</beans>


关键的是
<context:component-scan base-package="com.baobaotao"/>

beans 的 xmlns也要使用最新的..
-----------------------------------------------------------------

在使用annotation的时候,发现了个问题,过去在使用dao的时候,是运用HibernateDaoSupport,需要注入hibernateTemplate
	<bean id="dao" abstract="true">
		<property name="hibernateTemplate" ref="hibernateTemplate"></property>
	</bean>

这是个好方法,在自定义的dao中加上parent属性就可以了..
但annotation中好像没有相应的属性...

这个郁闷了..我使用的是泛型DAO..
发现一篇老的好blog:
http://blog.springsource.com/2007/06/26/so-should-you-still-use-springs-hibernatetemplate-andor-jpatemplate/

So should you still use Spring's HibernateTemplate and/or JpaTemplate??

Spring1.0时代,在使用hibernate和spring的时候,都会被HibernateTemplate为我们提供 benefits(资源和事务管理以及把那个“丑陋”的checked exception转换为runtime exception-DataAccessException )而折服,在项目中不由自主、不假思索地使用它和那个经典的callback方法
在spring2.0后,我们可以使用SessionFactory.getCurrentSession()直接操作hibernate api.更何况在更多的情况下,我们都是直接面对的是hibernate api..
引用
Resource management
Since Hibernate 3.0.1 (and in the Java Persistence API from the moment it was first released) it became possible for Spring to manage the underlying resource without you having to go through any of the templates that are available for those technologies. This means that even if you are using the Hibernate API directly (for example through SessionFactory.getCurrentSession()), you will still be using a Spring-managed Hibernate Session. The same holds for an EntityManager obtained through a JPA EntityManagerFactory. This is another reason why you don't have to use Spring's HibernateTemplate anymore to get an integrated experience.

Transaction management
Now that Spring is capable of handling the underlying resources for you without you having to go through the template, Spring will also be able to synchronize the resources with any transaction going on while acquiring the resource. This means the transaction management concern is also addressed without you having to go through a template. Again, this means we do not necessarily have to use Spring's HibernateTemplate anymore.

Error handling
The one and only thing that is not available directly when you are using the plain APIs that come with Hibernate or JPA (i.e. the Hibernate Session or the JPA EntityManager) is the exception translation of technology-specific data access exceptions into the Spring DataAccessException hierarchy. This we can address very easily however as we'll see in a minute

看了上面的话,什么都可以不用担心了..

放弃template吧..得到更大的自由..




3
0
分享到:
评论

相关推荐

    spring内置jdbctemplate使用demo

    在 Spring 中使用 `JdbcTemplate` 需要以下几个步骤: 1. **配置数据源**:Spring 通过数据源(DataSource)与数据库建立连接。在这个例子中,我们将使用 c3p0 数据源。c3p0 是一个开源的 JDBC 连接池,它可以提供...

    Spring+Android框架

    2. **Android Annotation Processing**:Spring for Android支持注解处理器,可以用来实现依赖注入,类似于在服务器端的Spring。这使得开发者可以在Android应用中使用@Autowired和其他Spring注解,减少手动配置,...

    spring集成redis的使用demo

    这就是一个简单的Spring MVC与Redis集成的示例,展示了如何在Spring应用中使用Redis进行数据存储和删除。在实际项目中,你可能需要处理更复杂的序列化策略、缓存策略以及分布式锁等问题,但这个基础的Demo足以提供一...

    Spring Cloud Feign统一设置验证token实现方法解析

    在微服务架构中, token验证是非常重要的安全机制之一,本文将主要介绍如何使用Spring Cloud Feign统一设置验证token实现方法解析。 首先,我们需要了解Feign组件的工作机制。Feign组件是一个基于Annotation的接口...

    mongo spring boot Aggregate 例子

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.aggregation.Aggregation; import ...

    spring2 集成视图

    至此,我们已经介绍了如何在Spring2中集成视图,包括配置`DispatcherServlet`、视图解析器、创建Controller以及使用JSP、FreeMarker和Thymeleaf等不同视图技术。理解并熟练掌握这些知识点,能够帮助开发者构建高效、...

    Spring3.2.0 框架jar包及Spring依赖jar包

    7. **Spring Boot**:虽然Spring Boot不属于Spring3.2.0的范畴,但它是Spring发展的一个重要补充,它简化了Spring应用的初始化和配置,提供了嵌入式Web服务器,并默认配置了常见的Spring设置。 在Spring3.2.0版本中...

    SpingMVC:使用Annotation使用Spring MVC的演示应用程序

    在本文中,我们将深入探讨如何使用注解来配置和运行一个基于 Spring MVC 的演示应用程序。 ### 注解驱动的 Spring MVC Spring MVC 支持使用注解来简化配置,这使得开发者可以避免编写大量的 XML 配置文件。以下是...

    spring整合redis

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @Component public class Redis...

    Spring 整合freemarker制作html页面简单demo(附带操作提示).rar

    spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.charset=UTF-8 ``` 3. **创建模板**:在 `src/main/resources/templates` 目录下创建一个名为 `index.ftl` 的文件,这是我们的 ...

    spring-data 访问 mongdb

    在本文中,我们将深入探讨如何使用Spring Data访问MongoDB,这是一种流行的数据访问框架,它简化了与MongoDB数据库的交互。Spring Data MongoDB提供了一种声明式的方法来操作NoSQL数据库,使得开发人员能够以Java...

    通向架构师的道路(第二十一天)万能框架spring(三)之SSH.docx

    Spring 通过一个 Hibernate Template 来和 Hibernate 的 DAO 层结合起来,并管理 Hibernate 的事务。我们可以使用 Spring 统一管理 Hibernate 的事务,从而简化了开发过程。 四、Hibernate 配置 Hibernate 的配置...

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    Spring Boot elasticsearch7.6.2基础操作:创建索引、新增数据、查询数据

    在本文中,我们将深入探讨如何使用Spring Boot与Elasticsearch 7.6.2进行基本操作,包括创建索引、添加数据以及查询数据。Elasticsearch是一个强大的分布式搜索引擎,而Spring Boot是Java开发中的轻量级框架,两者...

    Spring/泛型Hibernate的实现

    ### 泛型Hibernate的...本文详细介绍了如何实现泛型Hibernate,并将其与Spring框架集成,以及如何使用Maven构建工程。通过这些技术的应用,开发者可以更加高效地进行数据库操作,同时保证代码的可维护性和可扩展性。

    mongodb与springboot集成例子

    下面我们将详细讨论如何在 Spring Boot 中集成 MongoDB,并通过使用 `MongoTemplate` 进行数据的增删改查操作。 **1. 添加依赖** 首先,我们需要在项目中添加 MongoDB 和 Spring Data MongoDB 的依赖。如果你使用...

    Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)

    import org.springframework.data.annotation.Id; import java.util.Date; public class User { @Id private String userId; private String name; private Integer age; private Date createTime = new Date...

    spring boot query查询

    本篇文章将深入探讨Spring Boot中使用`@Query`注解进行自定义查询的方法,包括Spring Data JPA和Template两种模式。 首先,让我们了解Spring Data JPA。这是一个强大的ORM(对象关系映射)框架,它简化了与数据库的...

    spring java

    通过分析`spring_aop_annotation`文件,我们可以学习如何在实际项目中实现注解驱动的AOP编程。 二、Spring AOP代理机制 Spring的AOP功能是通过动态代理实现的,分为JDK动态代理和CGLIB代理两种方式。`spring_aop_...

    Java的Spring Boot 集成 Elasticsearch 使用详解.docx

    import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @Document(indexName = Constant.INDEX) public class UserDocument { @Id private ...

Global site tag (gtag.js) - Google Analytics