zoukankan      html  css  js  c++  java
  • IDEA 中生成 Hibernate 逆向工程实践

        谈起 Hibernate 应该得知道 Gavin King 大叔,他构建了 Hibernate ,并将其捐献给了开源社区。

        

       Hibernate 对象关系映射解决方案,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。

       Hibernate 的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。

       Hibernate 也是目前Java开发中最为火热的数据库持久层框架,现已归JBOSS所有。

       好了言归正传,IDEA 对开发者真的是贴心的小棉袄,本篇博客记录下 IDEA 中连接数据库反转生成 Hibernate 实体和配置文件。

    1. 打开 DataBase 窗口,添加数据源

       OK,数据源已添加好。

    2. 添加 hibernat 持久层支持,生成实体 Bean /配置文件

     

       然后选择数据源,选择包,添加生成 Bean 的后缀,选择表,选择生成 xml 配置文件还是注解。

       OK,结束,是不是比 Eclipse/MyEclipse 上面安装各种插件效率要高的多。

       如果你选择生成带 JPA 注解类,映射文件是可以省略的,相反如果你生成映射文件,JPA 注解也可以省略。

       看你喜欢哪种方式,有机会说说 JPA 注解类和映射文件在项目实战中的优劣。

       生成的JPA 注解类:

    @Entity
    @Table(name = "user", schema = "db_test", catalog = "")
    public class UserPO {
        private String uuid;
        private String name;
        private String passwd;
        private String sex;
        private Timestamp birthday;
        private String phone;
        private String photo;
        private String email;
        private String yxbz;
        private String sorts;
    
        @Id
        @Column(name = "UUID")
        public String getUuid() {
            return uuid;
        }
    
        public void setUuid(String uuid) {
            this.uuid = uuid;
        }
    
        @Basic
        @Column(name = "NAME")
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Basic
        @Column(name = "PASSWD")
        public String getPasswd() {
            return passwd;
        }
    
        public void setPasswd(String passwd) {
            this.passwd = passwd;
        }
    
        @Basic
        @Column(name = "SEX")
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        @Basic
        @Column(name = "BIRTHDAY")
        public Timestamp getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Timestamp birthday) {
            this.birthday = birthday;
        }
    
        @Basic
        @Column(name = "PHONE")
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        @Basic
        @Column(name = "PHOTO")
        public String getPhoto() {
            return photo;
        }
    
        public void setPhoto(String photo) {
            this.photo = photo;
        }
    
        @Basic
        @Column(name = "EMAIL")
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Basic
        @Column(name = "YXBZ")
        public String getYxbz() {
            return yxbz;
        }
    
        public void setYxbz(String yxbz) {
            this.yxbz = yxbz;
        }
    
        @Basic
        @Column(name = "SORTS")
        public String getSorts() {
            return sorts;
        }
    
        public void setSorts(String sorts) {
            this.sorts = sorts;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
    
            UserPO userPO = (UserPO) o;
    
            if (uuid != null ? !uuid.equals(userPO.uuid) : userPO.uuid != null) return false;
            if (name != null ? !name.equals(userPO.name) : userPO.name != null) return false;
            if (passwd != null ? !passwd.equals(userPO.passwd) : userPO.passwd != null) return false;
            if (sex != null ? !sex.equals(userPO.sex) : userPO.sex != null) return false;
            if (birthday != null ? !birthday.equals(userPO.birthday) : userPO.birthday != null) return false;
            if (phone != null ? !phone.equals(userPO.phone) : userPO.phone != null) return false;
            if (photo != null ? !photo.equals(userPO.photo) : userPO.photo != null) return false;
            if (email != null ? !email.equals(userPO.email) : userPO.email != null) return false;
            if (yxbz != null ? !yxbz.equals(userPO.yxbz) : userPO.yxbz != null) return false;
            if (sorts != null ? !sorts.equals(userPO.sorts) : userPO.sorts != null) return false;
    
            return true;
        }
    
        @Override
        public int hashCode() {
            int result = uuid != null ? uuid.hashCode() : 0;
            result = 31 * result + (name != null ? name.hashCode() : 0);
            result = 31 * result + (passwd != null ? passwd.hashCode() : 0);
            result = 31 * result + (sex != null ? sex.hashCode() : 0);
            result = 31 * result + (birthday != null ? birthday.hashCode() : 0);
            result = 31 * result + (phone != null ? phone.hashCode() : 0);
            result = 31 * result + (photo != null ? photo.hashCode() : 0);
            result = 31 * result + (email != null ? email.hashCode() : 0);
            result = 31 * result + (yxbz != null ? yxbz.hashCode() : 0);
            result = 31 * result + (sorts != null ? sorts.hashCode() : 0);
            return result;
        }
    }
    View Code

       生成的映射文件:

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    
        <class name="com.rombo.hiberdemo.po.OrgaUserPO" table="orga_user" schema="db_test">
            <id name="uuid" column="UUID"/>
            <property name="orgaid" column="ORGAID"/>
            <property name="userid" column="USERID"/>
            <property name="mtype" column="MTYPE"/>
        </class>
    </hibernate-mapping>
    View Code
  • 相关阅读:
    J2SE总结
    OSI模型与TCP/IP协议族
    poppler交叉编译
    摆脱技术思维,转向产品思维——寻找“万能”IDC的苦恼
    面向自由职业者和小型企业的开源开票工具
    3星|《中国做对了什么》:十几年前的文章集了,依旧不过时
    2星|《巴菲特致股东的信》:标题党,实际是1996年一次研讨会的发言记录,没有致股东的信
    3星|《不会被机器替代的人》:人在被服务的时候,更喜欢面对面跟人打交道,而不是跟机器打交道
    3星|《提高职场执行力》:执行力难关的根源是对话的无效性
    2星|《工业X.0》:物联网的资料汇编
  • 原文地址:https://www.cnblogs.com/java-class/p/6208356.html
Copyright © 2011-2022 走看看