ihibetnate学习之利用idea完成数据库表逆向生成实体类!

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

这里我们来看一下利用idea完成po,数据库表映射关系以及Hibernate.cfg.xml的配置。

1,打开idea,创建项目,这里需选择Java Enterorise,其他选择如下图

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

2、项目创建完成后,在src目录下创建将要存储pojo或者Entiy的包

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

3、这里我们还需要引入框架所需要的包https://jingyan.baidu.com/article/ce09321b40f8132bff858f83.html,这里提供了下载方法

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

4、

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!

ihibetnate学习之利用idea完成数据库表逆向生成实体类!


下面我们提供逆向生成的Entiy。java、Hibernate.cfg.xml文件配置以及通过实体类增删改查数据库表的方法:


 

UserInfoEntity.java

package com.entiy;

import java.util.Objects;

public class UserInfoEntity {
   
private int userId;
   
private StringuserName;
   
private StringuserPassword;
   
private StringuserEmail;
   
private StringuserImage;

   
public int getUserId() {
       
return userId;
    }

   
public void setUserId(intuserId) {
       
this.userId= userId;
    }

   
public String getUserName() {
       
return userName;
    }

   
public void setUserName(String userName) {
       
this.userName= userName;
    }

   
public String getUserPassword() {
       
return userPassword;
    }

   
public void setUserPassword(String userPassword) {
       
this.userPassword= userPassword;
    }

    
public String getUserEmail() {
       
return userEmail;
    }

   
public void setUserEmail(String userEmail) {
       
this.userEmail= userEmail;
    }

   
public String getUserImage() {
       
return userImage;
    }

   
public void setUserImage(String userImage) {
       
this.userImage= userImage;
    }

   
@Override
   
public boolean equals(Object o) {
       
if (this== o)return true;
       
if (o ==null|| getClass() != o.getClass())return false;
        UserInfoEntity that = (UserInfoEntity) o;
       
return userId== that.userId&&
                Objects.equals(
userName, that.userName) &&
                Objects.equals(
userPassword, that.userPassword) &&
                Objects.equals(
userEmail, that.userEmail) &&
                Objects.equals(
userImage, that.userImage);
    }

   
@Override
   
public int hashCode() {

       
return Objects.hash(userId,userName,userPassword,userEmail,userImage);
    }
}

 


Hibernate.cfg.xml

<?xml version='1.0'encoding='utf-8'?>
<!DOCTYPEhibernate-configurationPUBLIC
       
"-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
>
<hibernate-configuration>
    <
session-factory>
        <
propertyname="connection.url">jdbc:mysql://localhost:3306/my</property>
        <
propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
        <
propertyname="connection.username">root</property>
       
<!--指定连接数据库的密码-->
       
<propertyname="connection.password">123456</property>
       
<!--指定连接池里最大连接数-->
       
<propertyname="c3p0.max_size">30</property>
       
<!--指定连接池里最小连接数-->
       
<propertyname="c3p0.min_size">1</property>
       
<!--指定连接池里连接的超时时长-->
       
<propertyname="c3p0.timeout">5000</property>
       
<!--指定连接池里最多缓存多少个Statement对象-->
       
<propertyname="c3p0.max_statements">100</property>
       
<!--每3000秒检查空闲连接-->
       
<propertyname="c3p0.idle_test_period">3000</property>
       
<!--当连接池里的连接用完的的时候,c3p0一下获取的新的链接数-->
       
<propertyname="c3p0.acquire_increment">2</property>
       
<!--每次都检查链接是否可用-->
       
<propertyname="c3p0.validate">true</property>
       
<!--指定数据库方言-->
       
<propertyname="dialect">org.hibernate.dialect.MySQL57Dialect</property>
       
<!--根据需要自动创建数据表-->
       
<propertyname="hbm2ddl.auto">update</property>
       
<!--显示Hibernate持久化操作生成的SQL-->
       
<propertyname="show_sql">true</property>
       
<!--将SQL脚本格式化后再输出-->
       
<propertyname="hibernate.format_sql">true</property>
       
<!--罗列所有持久化类的类名-->
       
<mappingclass="com.MySchoolEntity"/>
       
<!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
       
<mappingresource="com/MySchoolEntity.hbm.xml"/>
       
<!-- <property name="connection.username"/> -->
        <!-- <property name="connection.password"/> -->

        <!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
   
</session-factory>
</
hibernate-configuration>

 

 

 testMain.java

package com;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;


public class NewStudengs {
   
public static void main(String[] args)throwsException{
       
//实例化Configuration
        //
不带参的configure方法默认加载hibernate.cfg.xml文件
       
Configuration conf=newConfiguration().configure();
       
//创建会话工厂对象
       
SessionFactory sf=conf.buildSessionFactory();
       
//创建会话对象
       
Session session=sf.openSession();
        
//开始事物
       
Transaction ts=session.beginTransaction();
       
//---------------------------------------------------------
        //
插入
        //
创建实例对象
       
Student student=new  Student();
        student.setName(
"李进");
        student.setAge(
"20");
       
//保存消息
       
session.save(student);
       
//*************************************************************


        //---------------------------------------------------------
        //
查询
        //
加载持久化实体代码
       
Student s=session.load(Student.class,1);
        System.out.println(s);
       
//---------------------------------------------------------


        //---------------------------------------------------------
        //
更新(改动)
        //
更新持久化实体
       
Student ss=session.load(Student.class,3);
        ss.setName(
"刘康");
        ss.setAge(
"33");
        session.flush();
       
//---------------------------------------------------------


        //---------------------------------------------------------
        //
删除
        //
删除持久化实体
       
Student sss=session.load(Student.class,3);
        session.delete(sss);
       
//---------------------------------------------------------
       

        //*************************************************************
        //
提交事务
       
ts.commit();
       
//关闭session
       
session.close();
        sf.close();
    }
}