<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://www.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ù)  更多評論
      
    主站蜘蛛池模板: 亚洲精品黄色视频在线观看免费资源 | 国产亚洲A∨片在线观看| 精品久久久久久亚洲| 亚洲精品在线观看视频| 亚洲av无码一区二区三区观看| 亚洲乱亚洲乱妇24p| 黄页网站在线免费观看| 男人天堂免费视频| 69堂人成无码免费视频果冻传媒| 午夜老司机免费视频| 亚洲日韩在线中文字幕第一页| 亚洲成Av人片乱码色午夜| 亚洲喷奶水中文字幕电影| 亚洲第一成年免费网站| 成人无码视频97免费| 国产91免费在线观看| 四虎免费永久在线播放| 亚洲精品无码不卡在线播放HE| 亚洲国产成人久久综合一区| 国产精品亚洲二区在线| 精品免费视在线观看| 成人啪精品视频免费网站| 亚洲综合最新无码专区| 亚洲白嫩在线观看| 人人公开免费超级碰碰碰视频| 免费A级毛片无码A∨免费| 免费一级毛片清高播放| 亚洲高清不卡视频| 特黄特色的大片观看免费视频| 亚洲黄色免费在线观看| 中文字幕亚洲一区二区三区 | 伊人婷婷综合缴情亚洲五月| 亚洲喷奶水中文字幕电影| 国产精品黄页免费高清在线观看| 美女视频黄的全免费视频网站| 亚洲国产av无码精品| 亚洲免费二区三区| 中国黄色免费网站| 日韩免费一区二区三区| 内射少妇36P亚洲区| 十八禁的黄污污免费网站|