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,其他选择如下图
2、项目创建完成后,在src目录下创建将要存储pojo或者Entiy的包
3、这里我们还需要引入框架所需要的包https://jingyan.baidu.com/article/ce09321b40f8132bff858f83.html,这里提供了下载方法
4、
下面我们提供逆向生成的Entiy。java、 Hibernate.cfg.xml 文件配置以及通过实体类增删改查数据库表的方法:
UserInfoEntity.java
package com.entiy; import java.util.Objects; public class UserInfoEntity { private int userId ; private String userName ; private String userPassword ; private String userEmail ; private String userImage ; public int getUserId() { return userId ; } public void setUserId( int userId) { 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' ?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" > < hibernate-configuration > < session-factory > < property name ="connection.url" > jdbc:mysql://localhost:3306/my</ property > < property name ="connection.driver_class" > com.mysql.jdbc.Driver</ property > < property name ="connection.username" > root</ property > <!-- 指定连接数据库的密码--> < property name ="connection.password" > 123456</ property > <!-- 指定连接池里最大连接数--> < property name ="c3p0.max_size" > 30</ property > <!-- 指定连接池里最小连接数--> < property name ="c3p0.min_size" > 1</ property > <!-- 指定连接池里连接的超时时长--> < property name ="c3p0.timeout" > 5000</ property > <!-- 指定连接池里最多缓存多少个Statement 对象--> < property name ="c3p0.max_statements" > 100</ property > <!-- 每3000 秒检查空闲连接--> < property name ="c3p0.idle_test_period" > 3000</ property > <!-- 当连接池里的连接用完的的时候,c3p0 一下获取的新的链接数--> < property name ="c3p0.acquire_increment" > 2</ property > <!-- 每次都检查链接是否可用--> < property name ="c3p0.validate" > true</ property > <!-- 指定数据库方言--> < property name ="dialect" > org.hibernate.dialect.MySQL57Dialect</ property > <!-- 根据需要自动创建数据表--> < property name ="hbm2ddl.auto" > update</ property > <!-- 显示Hibernate 持久化操作生成的SQL--> < property name ="show_sql" > true</ property > <!-- 将SQL 脚本格式化后再输出--> < property name ="hibernate.format_sql" > true</ property > <!-- 罗列所有持久化类的类名--> < mapping class ="com.MySchoolEntity" /> <!-- DB schema will be updated if needed --> <!-- <property name="hbm2ddl.auto">update</property> --> < mapping resource ="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) throws Exception{ // 实例化Configuration // 不带参的configure方法默认加载hibernate.cfg.xml文件 Configuration conf= new Configuration().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(); } }