您的位置:首页 > 编程语言 > Java开发

使用myeclipse编写Hibernate小栗子

2016-11-21 21:24 357 查看
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表中插入了一条数据。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: