<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評論-578  文章-1  trackbacks-0

    開發(fā)工具:Eclipse 3.4 for JavaEE

    開發(fā)環(huán)境:JDK-6u14,JBoss5.0.1GA

    從JPA開始,先設(shè)計四個類,分別為User, Role, Category, Article,它們之間的關(guān)系,如下圖:

    202

    設(shè)置關(guān)聯(lián)映射時,為簡單起見,一個用戶只能擁有一個角色,一篇文章只能屬于一個欄目。而授權(quán)與權(quán)限管理方面,也為了簡單起見,只設(shè)置角色擁有操縱哪些欄目的權(quán)限。

    下面是我們的4個類的代碼:

    用戶類(User.java)

     

    package rong.entity;

    import java.io.Serializable;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;

    /**
     * 用戶
     * 
    @author rongxinhua
     
    */

    @Entity        
    //JPA注解,聲明為實體類
    public class User implements Serializable {
        
        
    private Long id;        //ID
        private String loginName;    //登錄名
        private String password;    //登錄密碼
        private Role role;            //用戶角色
        
        @Id
        @GeneratedValue(strategy 
    = GenerationType.AUTO)
        
    public Long getId() {
            
    return id;
        }

        
    public void setId(Long id) {
            
    this.id = id;
        }

        
        
    public String getLoginName() {
            
    return loginName;
        }

        
    public void setLoginName(String loginName) {
            
    this.loginName = loginName;
        }

        
        
    public String getPassword() {
            
    return password;
        }

        
    public void setPassword(String password) {
            
    this.password = password;
        }

        
        @ManyToOne(cascade 
    = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
        @JoinColumn(name 
    = "role_id")
        
    public Role getRole() {
            
    return role;
        }

        
    public void setRole(Role role) {
            
    this.role = role;
        }

        

    }

     

    角色類(Role.java)

     

    package rong.entity;

    import java.io.Serializable;
    import java.util.LinkedHashSet;
    import java.util.Set;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;

    /**
     * 角色
     * 
    @author rongxinhua
     
    */

    @Entity        
    //JPA注解,聲明為實體類
    public class Role implements Serializable{
        
        
    private Long id;    //角色ID
        private String name;    //角色名稱
        private Set<User> users = new LinkedHashSet<User>();    //用戶集合
        private Set<Category> categorys = new LinkedHashSet<Category>();    //能操縱的欄目集合
        
        @Id
        @GeneratedValue(strategy 
    = GenerationType.AUTO)
        
    public Long getId() {
            
    return id;
        }

        
    public void setId(Long id) {
            
    this.id = id;
        }

        
        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
        @OneToMany(cascade 
    = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "role")
        
    public Set<User> getUsers() {
            
    return users;
        }

        
    public void setUsers(Set<User> users) {
            
    this.users = users;
        }

        
        @ManyToMany(cascade 
    = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY, mappedBy = "roles")
        
    public Set<Category> getCategorys() {
            
    return categorys;
        }

        
    public void setCategorys(Set<Category> categorys) {
            
    this.categorys = categorys;
        }


    }

     

    欄目類(Category.java)

     

    package rong.entity;

    import java.io.Serializable;
    import java.util.LinkedHashSet;
    import java.util.Set;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;

    /**
     * 欄目.
     * 
    @author rongxinhua
     
    */

    @Entity        
    //JPA注解聲明為實體類
    public class Category implements Serializable{
        
        
    private Long id;
        
    private String name;
        
    private Set<Role> roles = new LinkedHashSet<Role>();
        
    private Set<Article> articles = new LinkedHashSet<Article>();
        
        @Id @GeneratedValue(strategy 
    = GenerationType.AUTO)
        
    public Long getId() {
            
    return id;
        }

        
    public void setId(Long id) {
            
    this.id = id;
        }

        
        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
        @ManyToMany(cascade 
    = {CascadeType.PERSIST, CascadeType.MERGE},fetch = FetchType.LAZY)
        @JoinTable(
            name 
    = "category_role",
            joinColumns 
    = {@JoinColumn(name = "category_id")},
            inverseJoinColumns 
    = {@JoinColumn(name = "role_id")}
        )
        
    public Set<Role> getRoles() {
            
    return roles;
        }

        
    public void setRoles(Set<Role> roles) {
            
    this.roles = roles;
        }

        
        @OneToMany(cascade 
    = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "category")
        
    public Set<Article> getArticles() {
            
    return articles;
        }

        
    public void setArticles(Set<Article> articles) {
            
    this.articles = articles;
        }


    }

     

    文章類(Article.java)

    package rong.entity;

    import java.io.Serializable;
    import java.util.Date;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.Lob;
    import javax.persistence.ManyToOne;

    /**
     * 文章
     * 
    @author rongxinhua
     
    */

    @Entity        
    //聲明為實體類
    public class Article implements Serializable{
        
        
    private Long id;
        
    private String title;
        
    private String author;
        
    private String content;
        
    private Date pubtime;
        
    private Category category;
        
        @Id @GeneratedValue(strategy 
    = GenerationType.AUTO)
        
    public Long getId() {
            
    return id;
        }

        
    public void setId(Long id) {
            
    this.id = id;
        }

        
        
    public String getTitle() {
            
    return title;
        }

        
    public void setTitle(String title) {
            
    this.title = title;
        }

        
        
    public String getAuthor() {
            
    return author;
        }

        
    public void setAuthor(String author) {
            
    this.author = author;
        }

        
        @Lob
        
    public String getContent() {
            
    return content;
        }

        
    public void setContent(String content) {
            
    this.content = content;
        }

        
        
    public Date getPubtime() {
            
    return pubtime;
        }

        
    public void setPubtime(Date pubtime) {
            
    this.pubtime = pubtime;
        }

        
        @ManyToOne(cascade 
    = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
        @JoinColumn(name 
    = "category_id")
        
    public Category getCategory() {
            
    return category;
        }

        
    public void setCategory(Category category) {
            
    this.category = category;
        }


    }



    本文原創(chuàng),轉(zhuǎn)載請注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢帆影JavaEE技術(shù)博客)
        

    posted on 2009-06-13 02:15 心夢帆影 閱讀(2016) 評論(4)  編輯  收藏 所屬分類: EJB3JPA

    評論:
    # re: EJB3.0開發(fā)用戶授權(quán)與新聞發(fā)布系統(tǒng)(一) 2009-06-13 09:18 | metadmin
    用戶管理哦。如果設(shè)計到權(quán)限管理,尤其是數(shù)據(jù)級權(quán)限管理,歡迎參考 www.metadmin.com   回復(fù)  更多評論
      
    # re: EJB3.0開發(fā)用戶授權(quán)與新聞發(fā)布系統(tǒng)(一) 2009-06-13 11:00 | 小人物
    學(xué)習(xí)了!  回復(fù)  更多評論
      
    # re: EJB3.0開發(fā)用戶授權(quán)與新聞發(fā)布系統(tǒng)(一) 2009-06-13 21:44 | metadmin
    02年的時候,我線學(xué)習(xí)了EJB1.0,然后學(xué)習(xí)了2.0。 后來有hibernate這樣的orm工具,拋棄了ejb。現(xiàn)在我有自己的ORM,也不用hibernate了。

    http://metadmin.javaeye.com 這是我BLOG 講了一些權(quán)限管理知識 歡迎來做客  回復(fù)  更多評論
      
    # re: EJB3.0開發(fā)用戶授權(quán)與新聞發(fā)布系統(tǒng)(一) 2009-06-19 20:34 | 吳丹勇
    學(xué)習(xí)了!  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲熟妇AV日韩熟妇在线| 亚洲高清在线观看| 亚洲一区二区三区写真| 亚洲无砖砖区免费| 亚洲精品国产福利片| 精品无码人妻一区二区免费蜜桃| 亚洲乱码日产一区三区| 国产免费观看青青草原网站| 亚洲精品无播放器在线播放| a毛片在线看片免费| 日本亚洲视频在线| 午夜无码A级毛片免费视频| 亚洲免费视频在线观看| 亚洲黄色免费网址| 国产精品亚洲综合久久| 国产在线精品一区免费香蕉| 狠狠亚洲狠狠欧洲2019| 国产免费拔擦拔擦8X高清在线人| 拍拍拍又黄又爽无挡视频免费| 亚洲女久久久噜噜噜熟女| 亚洲精品无码永久在线观看男男| 成人免费在线观看网站| 一级毛片a免费播放王色电影 | 一级看片免费视频囗交| 亚洲视频在线一区二区| 中文在线免费不卡视频| 亚洲精品私拍国产福利在线| 成人浮力影院免费看| 亚洲AV日韩AV无码污污网站| 国产亚洲精品精品国产亚洲综合| 久久精品电影免费动漫| 亚洲一区无码精品色| 97在线视频免费| 亚洲AV无码精品国产成人| 亚洲综合图色40p| 69视频在线观看免费| 亚洲1区2区3区精华液| 国产aⅴ无码专区亚洲av| 手机在线看永久av片免费| 亚洲综合激情另类小说区| 妞干网在线免费观看|