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 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();
}
}
|