编写第一个 Hibernate 例子
一、新建 Java Project,取名为 Hibernate_001
导入包:参考 Eclipse下创建Hibernate工程
二、创建 Hibernate 配置文档
1、点击 src,右键 New,选择 Other
2、选择 Hibernate 下的 第一个,即 Hibernate Configuration file (cfg.xml)
3、点击 Next,选择默认的 src,点击 Next
4、出现一个表单,问是否创建 Session factory name,我们这里暂时不创建,直接点击 Finish
5、如果 xml 文件,代码不能自动提示,可以参考这里
6、最终生成的 hibernate.cfg.xml,我们填写以下代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="connection.username">root</property><!-- 用户名 -->
- <property name="connection.password"></property><!-- 密码 -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- jdbc驱动 -->
- <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property>
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- MySQL方言 -->
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <property name="hbm2ddl.auto">create</property><!-- ddl的生成策略 -->
- </session-factory>
- </hibernate-configuration>
三、创建 持久化类 Student 类
Student.java
- import java.util.Date;
- //学生类
- public class Student {
- private int sid;//学号
- private String name;//姓名
- private int sex;//性别
- private Date birthday;//出生日期
- private String address;//地址
- public Student() {
- }
- public Student(int sid, String name, int sex, Date birthday, String address) {
- //super();
- this.sid = sid;
- this.name = name;
- this.sex = sex;
- this.birthday = birthday;
- this.address = address;
- }
- public int getSid() {
- return sid;
- }
- public void setSid(int sid) {
- this.sid = sid;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getSex() {
- return sex;
- }
- public void setSex(int sex) {
- this.sex = sex;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "Student [sid=" + sid + ", name=" + name + ", sex=" + sex + ", birthday=" + birthday + ", address="
- + address + "]";
- }
- }
四、创建关系映射文件
1、点击 src,右键 New,选择 Other
2、选择 Hibernate 下的 第四个,即 Hibernate XML Mapping file (hbm.xml)
3、点击 Next,Next,Finish
4、最终生成 Student.hbm.xml 文件,我们可以看到以下代码
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!-- Generated 2017-7-24 20:28:18 by Hibernate Tools 3.5.0.Final -->
- <hibernate-mapping>
- <class name="Student" table="STUDENT">
- <id name="sid" type="int">
- <column name="SID" />
- <generator class="assigned" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- <property name="sex" type="int">
- <column name="SEX" />
- </property>
- <property name="birthday" type="java.util.Date">
- <column name="BIRTHDAY" />
- </property>
- <property name="address" type="java.lang.String">
- <column name="ADDRESS" />
- </property>
- </class>
- </hibernate-mapping>
5、给 hibernate.cfg.xml 添加关系映射,即在 <session-factory> 标签内加以下代码
- <mapping resource="Student.hbm.xml"/>
五、创建数据库
1、博主的本地 mysql 的账号是 root,密码为 空
2、创建数据库 hibernate,utf8编码
3、我们这里不用建数据表,待会儿 Hibernate 会自动帮我生成
六、使用 Junit 测试
1、点击 Hibernate_001 项目(不是点 src),右键 New,选择 Source Folder
2、Folder name,填写为 test ,点击 Finish
3、点击 test 文件夹,右键 新建 StudentTest 类
4、StudentTest 代码如下
- import java.util.Date;
- 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 testSaveStudnets() {
- //生成学生对象
- Student s = new Student(1,"张三丰",1,new Date(),"武当山");
- session.save(s);//保存对象进入数据库
- }
- }
注意:Hibernate 版本不同,可能方法不同,也会遇到不同问题,具体可以参 这里 的评论区
5、点击 StudentTest 展开,点击 testSaveStudents 方法
6、右键,run as Junit Test,如图
7、最终运行结果如下
左上角为绿色条,表示成功
同时,我们发现数据库里多了一张 Student 表,表里有数据