Hibernate是java领域的一款开源的ORM框架技术
Hibernate对JDBC进行了非常轻量级的对象封装
准备前的工作
导入Hibernate必须的jar包 hibernate-core.zip
导入MySQL的JDBC驱动 mysql-connector-java-5.1.7-bin.jar
导入Junit4的jar包 Junit-4.10.jar
我们可以把上面的jar包 添加自定义用户类库,方便每次导入jar包。添加后最好就不要移动这些jar包的位置了哦 不然你就要重新修改用户类库了
基本步骤
- 在MyEclipse Datebase Explorer 创建数据库连接
- 创建hibernate的配置文件
- 根据数据库表自动生成持久化类和对象关系映射文件
- 使用junit通过Hibernate API编写访问数据库的代码
在MyEclipse Datebase Explorer 创建数据库连接
点击myeclipse的右上角图标open Perspective 选择MyEclipse Database Explorer
在DB Browser界面鼠标右键new 新建数据库驱动
我用的是mysql数据库,使用其它数据库请相应修改,把数据库帐号密码 驱动添加后点击finsh即可。
创建hibernate的配置文件
点击你创建的java项目 右键 MyEclipse->Add Hibernate Capabilities
导入自定义类库的三个jar包 next
这里就是生成的hibernate配置文件位置和名称 点击next
选择我们刚刚在MyEclipse Database Explorer新建的数据库 点击next
create SessionFactory class是否创建SessionFactory类我取消勾选了 因为我在下面自己实例化了
点击finish即成功创建了hibernate的配置文件hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://localhost:3306/susu</property> <property name="connection.username">root</property> <property name="connection.password">123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="myeclipse.connection.profile">MySQLDriver</property> </session-factory> </hibernate-configuration>
根据数据库表自动生成持久化类和对象关系映射文件
点击myeclipse的右上角图标open Perspective 选择MyEclipse Database Explorer
在DB Browser界面打开我们创键的数据库连接
选中我们需要生成持久化类的表,右键选择Hibernate Reverse Engineering
java src folder 持久化类生成的项目位置
java package 持久化类的包名
点击next
id generator 选择native 点击finish
在你选择的项目里即成功生成了持久化类和对象关系映射文件
持久化类
package com.susu.entity; import java.util.Date; /** * Students entity. @author MyEclipse Persistence Tools */ public class Students implements java.io.Serializable { // Fields private Integer id; private String name; private String gender; private Date date; private String address; // Constructors /** default constructor */ public Students() { } /** full constructor */ public Students(String name, String gender, Date date, String address) { this.name = name; this.gender = gender; this.date = date; this.address = address; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getGender() { return this.gender; } public void setGender(String gender) { this.gender = gender; } public Date getDate() { return this.date; } public void setDate(Date date) { this.date = date; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } }
对象关系映射文件
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.susu.entity.Students" table="students" catalog="susu"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="20" /> </property> <property name="gender" type="java.lang.String"> <column name="gender" length="2" /> </property> <property name="date" type="java.util.Date"> <column name="date" length="0" /> </property> <property name="address" type="java.lang.String"> <column name="address" length="30" /> </property> </class> </hibernate-mapping>
这个时候会在hibernate.cfg.xml 新增一个映射 指向刚刚生成的关系映射文件
<mapping resource="com/susu/entity/Students.hbm.xml" />
通常我们还会加上
<property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property>
在控制台输出sql 语句并对Sql语句进行排版
具体作用请看这篇文章点击打开链接
使用junit通过Hibernate API编写访问数据库的代码
import java.util.Date; import java.util.Properties; 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; import com.susu.entity.Students; public class StudentsTest { 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(); } @Test public void testSaveStudents() { Students stu=new Students("张三", "男", new Date(), "河南省信阳市"); session.save(stu); } @After public void destroy() { transaction.commit();// 提交事务 session.close(); sessionFactory.close(); } }
运行结果:
打开mysql数据库会发现我们成功在Students表中插入了一条数据。