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

    xiaoxiao2022-06-30  58

    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; } }

    转载请注明原文地址: https://ju.6miu.com/read-1125762.html

    最新回复(0)