SSH学习小记(2)——注解配置

来源:互联网 发布:zeppelin 修改端口 编辑:程序博客网 时间:2024/05/16 11:41

1、先开启Spring的注解扫描,比如要使用@Autowired就要现在Spring容器中声明AutowiredAnnotationBeanPostProcessor的Bean

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/>

使用@Required也类似。我们可以直接在beans.xml配置如下语句

<context:component-scan base-package="pack.pack"/>

它会自动注入所有的processor,就可以使用各种注解了。
(部分参考自http://www.cnblogs.com/doudouxiaoye/p/5681518.html)
2、注解示例如下

@Controller("baseAction")@Scope("prototype")public class BaseAction<T> extends ActionSupport implementsRequestAware,SessionAware,ApplicationAware,ModelDriven<T> {    @Resource    protected CategoryService categoryService;    @Resource    protected AccountService accountService;

@Controller和@Service原理相同,只是便于区分该类所属的层。”baseAction”是定义在spring容器里的id,类里面的成员前加@Resource,此注解默认通过名字来注入bean。

3、POJO类的数据库映射和表与表之间的关系也可以通过注解来配置

@Entity@Table(name = "account", catalog = "shop")public class Account implements java.io.Serializable {

@Entity表示这是一个实体类,需要映射到数据库中,@Table配置了表的信息,表名account,catalog为数据库的名字

之后是关于字段的配置

    @Id    @GeneratedValue    @Column(name = "id", unique = true, nullable = false)    public Integer getId() {        return this.id;    }

写在get方法前面,这段注解表示id是主键,字段名为id,不可重复,不能为空。

4、其实这些注解配置都能通过hibernate的逆向工程自动生成。
这里写图片描述
打开MyEclipse的DB Browser在里面连接到数据库,即可通过此来进行逆向。

5、需要手动去设置的是表与表之间的关联,因为hibernate逆向工程自动生成的关系注解往往不是最合适的。

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "account")public Set<Category> getCategories() {        return this.categories;    }

这是Account类对Category的一对多配置,cascade表示级联,CascadeType.ALL表示增删改查的时候都会级联,fetch表示抓取策略,LAZY表示即时加载,即当Account加载时,Category不会马上加载,mappedBy=”account”表示Account这个类通过Category里的account成员变量来被维护的,也就是说Account放弃维护关系。

    @ManyToOne(fetch = FetchType.EAGER)    @JoinColumn(name = "account_id")    public Account getAccount() {        return this.account;    }

这是多的一方,EAGER表示立即加载,当查询Category时,会立马加载Account,@JoinColumn表明外键account_id

原创粉丝点击