SSH框架中如何使用注解(各注解的含义)

1.Spring注解

Spring常用的注解有:@Resource、@Autowired、@Service、@Repositiry、@Component、@Transaction六个注解

      @Resource其实不是Spring中的注解,而是JAVA中的标准注解,是JSR-250中的一个规范,Spring对其进行了实现。使用@Resource注解可以注入JavaBean,默认按照名字注入JavaBean

@Resource(name="personDao")  
IPersonDao personDao; 

<span style="font-family: "microsoft yahei"; font-size: 15px; color: rgb(100, 100, 100); background: yellow;"><span style="font-size: 14px;">@Autowired</span></span><span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;">是<span style="font-family: Calibri;">Spring</span>的一个注解,作用和<span style="color: rgb(100, 100, 100); background: yellow;">@Resource</span><span style="color: rgb(100, 100, 100);">是一样的,</span><span style="color: rgb(100, 100, 100); background: yellow;">@Autowired</span>默认按照类型注入。</span>
<span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;"><span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"> </span><span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;"><span style="color: rgb(100, 100, 100); background: yellow;">@Service</span></span><span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;">用来标注在<span style="font-family: Calibri;">Service</span>类上,表示让<span style="font-family: Calibri;">Spring</span>来实例化<span style="font-family: Calibri;">Service</span>类,也就是我们所说的<span style="font-family: Calibri;">IOC</span>。</span>
</span>
<span style="color: rgb(85, 85, 85); font-size: 14px;"><span style="color: rgb(85, 85, 85); font-size: 14px;"></span></span><pre name="code" class="java" style="font-family: "microsoft yahei";">@Service //标注service层  
public class PersonService implements IPersonService  

<span style="font-family: "microsoft yahei"; font-size: 14px; color: rgb(100, 100, 100); background: yellow;">@Repository</span><span style="font-family: "microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;">用来标注在</span><span style="font-family: Calibri; color: rgb(85, 85, 85); font-size: 14px;">DAO</span><span style="font-family: "microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;">类或是数据访层的类中,作用和</span><span style="font-family: "microsoft yahei"; font-size: 14px; color: rgb(100, 100, 100); background: yellow;">@Service</span><span style="font-family: "microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;">一样</span><pre name="code" class="java" style="font-family: "microsoft yahei";">@Repository //标注dao层  
public class PersonDao extends GenericReposistoryHibernate implements   IPersonDao  

<span style="font-family: "microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;"><span style="color: rgb(100, 100, 100); background: yellow;">@Component</span></span><span style="font-family: "microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;">用来标注普通的<span style="font-family: Calibri;">JavaBean,</span>例如<span style="font-family: Calibri;">POJO</span>和<span style="font-family: Calibri;">MODEL</span>类等。</span><pre name="code" class="java" style="font-family: "microsoft yahei";">@Component("personPojo" )// 把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>  
public class PersonPojo extends GenericObject  

<span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"> </span><span style="font-family: "microsoft yahei"; font-size: 15px; color: rgb(100, 100, 100); background: yellow;">@Transactional</span><span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;">是事务注解,使用该注解可以让<span style="font-family: Calibri;">Spring</span>代替我们接管事务,不用每次都由程序员来提交和回滚事务</span>
<span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;">
</span>
<span style="color: rgb(85, 85, 85); font-size: 14px;"></span><h3 style="font-family: "microsoft yahei"; margin: 0px; padding: 0px; color: rgb(85, 85, 85);">3.2    JPA与Hibernate注解</h3><p style="font-family: "microsoft yahei"; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-size: 15px;"><span style="font-size: 14px;">         之前讲到过<span style="font-family: Calibri;">Hibernate</span>中使用注解用到的是<span style="font-family: Calibri;">JPA</span>。<span style="font-family: Calibri;">JPA</span>其实也是<span style="font-family: Calibri;">JAVA</span>中的规范之一,是与<span style="font-family: Calibri;">EJB3</span>一起诞生的产物,全称为<em><span style="font-family: Calibri;">Java Persistence API</span></em>(<span style="font-family: Calibri;">JAVA</span>持久化<span style="font-family: Calibri;">API</span>)。使用<span style="font-family: Calibri;">JPA</span>可以实现<span style="font-family: Calibri;">Java Bean</span>的<span style="font-family: Calibri;">ORM</span>映射,包括对象和表、属性和字段、对象依赖和表间关系的映射(例如一对一、一对多、多对多的映射)。下面的示例是<span style="font-family: Calibri;">JPA</span>的基本使用方法:</span></p><pre name="code" class="java" style="font-family: "microsoft yahei";">@Table(name = "person") //标注对应的数据库表明。  
@Component("personPojo" )// 把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>  
public class PersonPojo extends GenericObject {  
    /** 
     *  
     */  
    private static final long serialVersionUID = 1L;  
    private String name;  
  
    @Column(name = "name", unique = true)  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
}  

<span style="font-family: "microsoft yahei"; font-size: 14px;">GenericObject</span><span style="font-family: "microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);">类</span><span style="font-size: 15px; font-family: Calibri;">,</span><span style="font-family: "microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);">该类提供一个父类的</span><span style="font-size: 15px; font-family: Calibri;">ID</span><span style="font-family: "microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);">,所有继承该类的子类都具有一个</span><span style="font-size: 15px; font-family: Calibri;">ID</span><pre name="code" class="java">public abstract class GenericObject{  
    private static final long serialVersionUID = 1L;  
    private String id;  
    public GenericObject() {  
        super();  
    }  
  
    @Id  
    @Column(name = "id", length = 36, nullable = true)  
    @GeneratedValue(generator = "hibernate-uuid.hex")  
    @GenericGenerator(name = "hibernate-uuid.hex", strategy = "uuid.hex")  
    public String getId() {  
        return id;  
    }  
  
    public void setId(String id) {  
        this.id = id;  
    }  
}  
  使用 <prop key= "hibernate.hbm2ddl.auto" > update </prop> 属性可以使 Hibernate 自动创建和修改表,而不用再手工修改。

 
<span style="color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 14px;">
</span>
<span style="font-family:microsoft yahei;"></span><h3 style="margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei";">3.1    Struts2注解</h3><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"><span style="font-size: 14px;"><span style="font-family: Calibri;">          Struts2</span>框架的注解是使用<span style="font-family: Calibri;">convention-plugin</span>插件实现的</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"><span style="font-size: 14px;">
</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"><span style="font-size: 14px;"></span><h2 style="margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei";">4  如何在工程中使用Spring切面事务和增删改查</h2></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei"; font-size: 15px;"><span style="font-size: 14px;">      在使用<span style="font-family: Calibri;">JDBC</span>或者是<span style="font-family: Calibri;">Hibernate</span>对数据库的进行增删改查操作时,通常都需要使用事务。事务是保证数据一致性和完整性的重要技术,如果使用不当,可能会产生不完整的交易数据,所以在软件开发中对事务的控制一定要认真对待。<span style="font-family: Calibri;">Spring</span>为我们提供了<span style="font-family: Calibri;">AOP</span>切面事务,使程序员不用自行控制事务。使用<span style="font-family: Calibri;">Spring</span>事务我们只需要标注<span style="font-family: Calibri;">@Transactional</span>注解即可,<span style="font-family: Calibri;">Spring</span>会自动接管方法中的事务。我们可以定一个数据库访问层的公共类,所有的<span style="font-family: Calibri;">DAO</span>类都继承至该类,而不用在每个<span style="font-family: Calibri;">DAO</span>都使用<span style="font-family: Calibri;">@Transactional</span>注解。</span></p><pre name="code" class="java">/** 
 * 持久化基类 
 *  
 * @author 山人 
 *  
 */  
@Transactional  
@Component("repositoryImp")  
public class GenericReposistoryHibernate {  
    @Resource  
    protected SessionFactory sessionFactory;  
    private Session session = null;  
  
    @Transactional  
    public <T, PK extends Serializable> PK create(T newInstance) {  
        PK save = (PK) getSession().save(newInstance);  
        return save;  
    }  
  
    @Transactional  
    public <T> void delete(T transientObject) {  
        getSession().delete(transientObject);  
    }  
  
    @Transactional  
    public <T> void update(T transientObject) {  
        getSession().update(transientObject);  
    }  
  
    @Transactional(readOnly=true)  
    public <T> List<T> findAll(Class<T> type) {  
  
        return getSession().createCriteria(type).list();  
    }  
  
    public <T> List<T> findHQLByParam(String hql, int firstResult,  
            int maxResult, Object... params) {  
        Query query = getSession().createQuery(hql);  
        for (int i = 0; i < params.length; i++) {  
  
            query.setParameter(i + 1, params[i]);  
        }  
        query.setMaxResults(maxResult);  
        query.setFirstResult(firstResult);  
        return query.list();  
  
    }  
  
    @Transactional(readOnly=true)  
    public <T> List<T> findAllValid(Class<T> clas) {  
  
        return getSession().createCriteria(clas).list();  
    }  
  
    @Transactional(readOnly=true)  
    public <T, PK extends Serializable> T get(Class<T> type, PK id,  
            boolean block) {  
        if (block)  
            return (T) getSession().get(type, id, LockMode.UPGRADE);  
        else  
            return (T) getSession().get(type, id);  
    }  
  
    public Session getSession() {  
        if (sessionFactory.isClosed()) {  
            sessionFactory.openSession();  
        } else {  
            session = sessionFactory.getCurrentSession();  
        }  
        return session;  
    }  
}  


 
 
 
 
 













  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值