4.3 关系数据库和类的影射

hibernate做出第一个革新在于:把关系数据库的表,映射成一个类。每一个表,都有一个类与之对应,表的字段就是类的属性,所有属性都按照javaBean的标准: 1.所有属性都是private 2.所有属性都有getter(取值)和setter(设值)方法 hibernate的第二个革新,是把最小处理单位规定为一条记录,而不是一个字段。在hibernate的世界里,要么就查一整条记录的所有字段(也就是所谓一行),要么就不查询。类似于Select username from user这样的查询,在hibernate里面是不支持的。hibernate查询的最小单位,就是某个影射类的一个对象(这个类必须是影射了某个关系表)。 为了配合这样的查询,hibernate有自己的查询语言HQL,初学者可以看做是没有select *的查询语句,直接从from 开始。例如:from User where username=‘abcdedf' 通过上一小节的hibernate工具,我们已经生成了影射类。所有的表都有一个类与之对应。 下面是user表的一个例子: 这是隐射的java文件:
public class User implements java.io.Serializable{
    private String username;
    private String password;
    private String role;
    private String nickname;
    private String createDate;
    public User(){
    }
    public User(String username){
        super();
        this.username=username;
    }
    public User(String username,String password,String role,String nickname,String createDate){
        this.username=username;
        this.password=password;
        this.role=role;
        this.nickname=nickname;
        this.createDate=createDate;
    }
    public User(String username,String password,String role,String nickname,String createDate,Set userClasses,Set clazzs,Set chapterStudies,Set chapterQuizCorrects,Set chapterQuizStudies,Set quizScores,Set userLogins){
        this.username=username;
        this.password=password;
        this.role=role;
        this.nickname=nickname;
        this.createDate=createDate;
    }
    public String getUsername(){
        return this.username;
    }
    public void setUsername(String username){
        this.username=username;
    }
    public String getPassword(){
        return this.password;
    }
    public void setPassword(String password){
        this.password=password;
    }
    public String getRole(){
        return this.role;
    }
    public void setRole(String role){
        this.role=role;
    }
    public String getNickname(){
        return this.nickname;
    }
    public void setNickname(String nickname){
        this.nickname=nickname;
    }
    public String getCreateDate(){
        return this.createDate;
    }
    public void setCreateDate(String createDate){
        this.createDate=createDate;
    }
}
这是数据库表和java类的映射配置文件,xml格式 注意,如果已经通过4.2 Hibernate工具生成java文件和影射文件,则不需要再复制 点击下载上面的文件User.hbm.xml(另存为) 1.java类的属性和表的字段一一对应 2.xml文件是配置文件,指定了哪个表映射成哪个类是,哪个字段对应哪个属性。例如,class name="model.User" table="user" lazy="false" catalog="javaidc_jssp" optimistic-lock="version",这一行name代表类的全名路径,table表示表名,catalog表示数据库名。 id这个配置是指定主键该怎么映射的,column表示字段,generator表示这个主键是怎么指定值的,assigned表示主键值是赋值的,identity则表示这个主键是自动递增的 property表示属性和哪个字段对应