Hibernate是Java的三大框架之一,
hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是对应MVC设计模式中的Model;
(2).然后我们需要创建一个持久化的类,这个类要求是公共的类,要至少有一个无参的构造方法,所有属性私有,每一个属性都要求有set和get方法。
(3).创建对象-关系映射文件。新建一个Hibernate XML Mapping file(hbm.xml)文件。它会自动生成一个包含表信息的XML文件。
(4).Hibernate这个框架可以帮我们在数据库中自动创建表,但是不会创建数据库,所以需要我们手动在数据库软件中建数据库,打开Navicat,在里面建一个名位Hibernate的
Hibernate对JDBC进行了封装,不在需要我们像JDBC那样去访问数据库。eclipse使用Hibernate框架需要装Hibernate的插件,myeclipse有自带的Hibernate插件,还需要导入一个Junit4的jar包来测试数据,除此之外还需要导入一个数据库的连接包,我用的是MySQL,导入的是mysql-connector-java-5.1.40-bin.jar包。
那么Hibernate怎么来使用呢?
(1).我们需要创建Hibernate的配置文件,新建一个Hibernate Configuration File(cfg.xml)文件。在配置文件中我们需要配置一些信息。
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-configurationPUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库的用户名 -->
<propertyname="connection.username">root</property>
<!-- 数据库的密码 -->
<propertyname="connection.password">12345678</property>
<!-- 数据库的驱动程序 -->
<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库的url地址 -->
<propertyname="connection.url">jdbc:mysql://localhost:3306/hibernate_student?useUnicode=true&characterEncoding=UTF-8</property>
<!-- 执行数据库的方言 -->
<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 是否显示sql语句 -->
<propertyname="show_sql">true</property>
<!-- 是否排版好sql语句 -->
<propertyname="format_sql">true</property>
<!-- 创建表模式 -->
<propertyname="hbm2ddl.auto">create</property>
<!-- 创建表的路径 -->
<mappingresource="Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
(2).然后我们需要创建一个持久化的类,这个类要求是公共的类,要至少有一个无参的构造方法,所有属性私有,每一个属性都要求有set和get方法。
public class Student {
private intuserId;
private String userName;
private String userSex;
private intuserAge;
private StringuserAddress;
public Student() {
}
public Student(intuserId, String userName, String userSex, int userAge, StringuserAddress) {
//super();
this.userId =userId;
this.userName =userName;
this.userSex =userSex;
this.userAge =userAge;
this.userAddress =userAddress;
}
public int getUserId() {
returnuserId;
}
public void setUserId(intuserId) {
this.userId =userId;
}
public String getUserName() {
returnuserName;
}
public void setUserName(StringuserName) {
this.userName =userName;
}
public String getUserSex() {
returnuserSex;
}
public void setUserSex(StringuserSex) {
this.userSex =userSex;
}
public int getUserAge() {
returnuserAge;
}
public void setUserAge(intuserAge) {
this.userAge =userAge;
}
public String getUserAddress() {
returnuserAddress;
}
public void setUserAddress(StringuserAddress) {
this.userAddress =userAddress;
}
@Override
public String toString() {
return"Student [userId=" + userId +", userName=" + userName +", userSex=" + userSex +", userAge=" + userAge
+", userAddress=" + userAddress +"]";
}
}
(3).创建对象-关系映射文件。新建一个Hibernate XML Mapping file(hbm.xml)文件。它会自动生成一个包含表信息的XML文件。
<?xmlversion="1.0"?>
<!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-12-7 14:45:54 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<classname="Student"table="STUDENT">
<idname="userId"type="int">
<columnname="USERID" />
<generatorclass="assigned" />
</id>
<propertyname="userName"type="java.lang.String">
<columnname="USERNAME" />
</property>
<propertyname="userSex"type="java.lang.String">
<columnname="USERSEX" />
</property>
<propertyname="userAge"type="int">
<columnname="USERAGE" />
</property>
<propertyname="userAddress"type="java.lang.String">
<columnname="USERADDRESS" />
</property>
</class>
</hibernate-mapping>
(4).Hibernate这个框架可以帮我们在数据库中自动创建表,但是不会创建数据库,所以需要我们手动在数据库软件中建数据库,打开Navicat,在里面建一个名位Hibernate的
数据库。
(5).我们可以写一个测试类来测试下用Hibernate完成的小Demo。
新建一个StudentTest类。
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//测试类
public class StudentTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
//测试之前初始化
@Before
public void init(){
//创建配置对象
Configuration config=new Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistry);
//会话对象
session=sessionFactory.openSession();
//开始事务
transaction=session.beginTransaction();
}
//测试之后释放
@After
public void destory(){
//提交事务
transaction.commit();
//关闭会话
session.close();
//关闭会话工厂
sessionFactory.close();
}
@Test
public void testSaveStudent(){
Student stu=new Student(1,"XX","男",21,"XX省");
//保存数据进数据库
session.save(stu);
}
}
最后我们右键StudentTest类的testSaveStudent()方法,选择Run as->Junit Test进行测试。当没有错误发生时,会在控制台的下面输出创建表和插入数据的SQL语句。然后打
开数据库,进入Table目录下面,会看见多了一张Student表,打开表,会看到我们刚刚在testSaveStudent()方法中保存的数据。
项目目录: