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 microsoft yahei"; font-size: 15px; color: rgb(100, 100, 100); background: yellow;"><span>@Autowired</span></span><span microsoft yahei"; font-size: 14px;"> 是 <span>Spring</span> 的一个注解,作用和 <span>@Resource</span><span> 是一样的,</span><span>@Autowired</span> 默认按照类型注入。</span>
- <span microsoft yahei"; font-size: 14px;"><span microsoft yahei"; font-size: 15px;"> </span><span microsoft yahei"; font-size: 14px;"><span>@Service</span></span><span microsoft yahei"; font-size: 14px;"> 用来标注在 <span>Service</span> 类上,表示让 <span>Spring</span> 来实例化 <span>Service</span> 类,也就是我们所说的 <span>IOC</span>。</span>
- </span>
- <span><span></span></span><pre name="code"class="java"microsoft yahei";">@Service // 标注 service 层
- public class PersonService implements IPersonService
- <span microsoft yahei"; font-size: 14px; color: rgb(100, 100, 100); background: yellow;">@Repository</span><span microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;">用来标注在 </span><span>DAO</span><span microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;"> 类或是数据访层的类中,作用和 </span><span microsoft yahei"; font-size: 14px; color: rgb(100, 100, 100); background: yellow;">@Service</span><span microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;"> 一样</span><pre name="code"class="java"microsoft yahei";">@Repository // 标注 dao 层
- public class PersonDao extends GenericReposistoryHibernate implements IPersonDao
- <span microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;"><span>@Component</span></span><span microsoft yahei"; color: rgb(85, 85, 85); font-size: 14px;"> 用来标注普通的 <span>JavaBean,</span> 例如 <span>POJO</span> 和 <span>MODEL</span> 类等。</span><pre name="code"class="java"microsoft yahei";">@Component("personPojo")// 把普通 pojo 实例化到 spring 容器中,相当于配置文件中的 <bean id="" class=""/>
- public class PersonPojo extends GenericObject
- <span microsoft yahei"; font-size: 15px;"> </span><span microsoft yahei"; font-size: 15px; color: rgb(100, 100, 100); background: yellow;">@Transactional</span><span microsoft yahei"; font-size: 14px;"> 是事务注解,使用该注解可以让 <span>Spring</span> 代替我们接管事务,不用每次都由程序员来提交和回滚事务 </span>
- <span microsoft yahei"; font-size: 14px;">
- </span>
- <span></span><h3 microsoft yahei"; margin: 0px; padding: 0px; color: rgb(85, 85, 85);">3.2 JPA 与 Hibernate 注解 </h3><p microsoft yahei"; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-size: 15px;"><span> 之前讲到过 <span>Hibernate</span> 中使用注解用到的是 <span>JPA</span>。<span>JPA</span> 其实也是 <span>JAVA</span> 中的规范之一,是与 <span>EJB3</span> 一起诞生的产物,全称为 <em><span>Java Persistence API</span></em>(<span>JAVA</span> 持久化 <span>API</span>)。使用 <span>JPA</span> 可以实现 <span>Java Bean</span> 的 <span>ORM</span> 映射,包括对象和表、属性和字段、对象依赖和表间关系的映射(例如一对一、一对多、多对多的映射)。下面的示例是 <span>JPA</span> 的基本使用方法:</span></p><pre name="code"class="java"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 microsoft yahei"; font-size: 14px;">GenericObject</span><span microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);">类 </span><span>,</span><span microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);"> 该类提供一个父类的</span><span>ID</span><span microsoft yahei"; font-size: 15px; background-color: rgb(255, 255, 0);">,所有继承该类的子类都具有一个</span><span>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 microsoft yahei"; font-size: 14px;">
- </span>
- <span></span><h3 microsoft yahei";">3.1 Struts2 注解 </h3><p microsoft yahei"; font-size: 15px;"><span><span> Struts2</span> 框架的注解是使用 <span>convention-plugin</span> 插件实现的 </span></p><p microsoft yahei"; font-size: 15px;"><span>
- </span></p><p microsoft yahei"; font-size: 15px;"><span></span><h2 microsoft yahei";">4 如何在工程中使用 Spring 切面事务和增删改查 </h2></p><p microsoft yahei"; font-size: 15px;"><span> 在使用 <span>JDBC</span> 或者是 <span>Hibernate</span> 对数据库的进行增删改查操作时,通常都需要使用事务。事务是保证数据一致性和完整性的重要技术,如果使用不当,可能会产生不完整的交易数据,所以在软件开发中对事务的控制一定要认真对待。<span>Spring</span> 为我们提供了 <span>AOP</span> 切面事务,使程序员不用自行控制事务。使用 <span>Spring</span> 事务我们只需要标注 <span>@Transactional</span> 注解即可,<span>Spring</span> 会自动接管方法中的事务。我们可以定一个数据库访问层的公共类,所有的 <span>DAO</span> 类都继承至该类,而不用在每个 <span>DAO</span> 都使用 <span>@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;
- }
- }
-
-
-
-
-
百度搜索 "就爱阅读", 专业资料, 生活学习, 尽在就爱阅读网 92to.com, 您的在线图书馆!
来源: http://www.92to.com/bangong/2017/08-21/27314815.html