使用IntelliJ IDEA创建Hibernate项目

最近正在学习web开发的三大框架即SSH ,目前正在学习Hibernate 操作数据库,由于其版本的更新,其中需要注意到的一些小问题。

下面是在IntelliJ IDEA下创建一个Hibernate项目的过程。
目前来说,IntelliJ IDEA作为一款优秀的IDE开发工具,其工具集成度很高。所以我们可以直接建立一个Hibernate项目:
创建项目
勾选Hibernate框架,这里我们看到Hibernate的最新版是5.2.10,勾选Create default hibernate configuratuion and main class ,让IDE为我们自动生成Hibernate的配置文(Hibernate.cfg.xml),

等待IDE为我们下载好所需的jar包,完成项目的创建。

接下来我们创建一个包,包名为com.colins110.test,看到我们的Hibernate 配置文件已经自动创建了,我们要对配置文件进行一些修改:
配置项目
这里我使用的是mysql,需要导入mysql的驱动包,这里我是用的是mysql-connector-java-5.1.42,在mysql官网可以获取。
配置如下:
配置

  • 连接url:jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8

    我的数据库名为hibernate ,?后表明使用unicode字符集,在xml文件中&需要写成&

  • 数据库驱动:com.mysql.jdbc.Driver
    这里使用的是上面导入的驱动包
  • 用户名:默认为root
  • 密码:我的密码为空
  • 使用方言:mysql方言有多种,这里选择org.hibernate.dialect.MySQL5Dialect新版方言
  • show_sql属性:在命令行显示生成的sql语句
    format_sql属性:格式化输出sql语句

  • hbm2ddl属性:设置为create,每次重新创建表

这样我们的Hibernate环境就配置好了

接下来需要配置一个实体类,用来表示数据库中的一个表,每个实体类对象则表示表中的一条记录,这样的话,我们在编程的时候只需要面向对象编程,而不需要写SQL语句了。

在这里我建立了一个Students类,这是一个典型的java Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.colins110.test;

import java.util.Date;

/**
* Created by colin on 2017/7/9 0009.
*/
//学生类
public class Students {
private int sid;
private String sname;
private String gender;
private Date birthday;
private String address;
public Students()
{}

public Students(int sid, String sname, String gender, Date birthday, String address) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
}

public int getSid() {
return sid;
}

public void setSid(int sid) {
this.sid = sid;
}

public String getSname() {
return sname;
}

public void setSname(String sname) {
this.sname = sname;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

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 "Students{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", gender='" + gender + '\'' +
", birthday=" + birthday +
", address='" + address + '\'' +
'}';
}
}

现在需要建立一个对应的配置文件,指明java Bean和数据库中表的映射关系,这里是Students.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

<class name="com.colins110.test.Students" table="Students">
<id name="sid" type="int">
<column name="id" />
<generator class="assigned"/>
</id>
<property name="sname" type="java.lang.String">
<column name="name" />
</property>
<property name="gender" type="java.lang.String">
<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>

下载需要将Students.hbm.xml映射文件配置到配置文件中:
引入映射文件
下面使用Juint4对hibernate进行测试

编写测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.colins110.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Date;

import static org.junit.Assert.*;

/**
* Created by colin on 2017/7/9 0009.
*/
public class StudentsTest {
private Configuration config;
private SessionFactory sf;
private Session session;
private Transaction transaction;
@Before
public void setUp() throws Exception {
config=new Configuration().configure();
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(config.getProperties()).configure().build();
sf=config.buildSessionFactory(serviceRegistry);
session=sf.openSession();
transaction=session.beginTransaction();
}

@After
public void tearDown() throws Exception {
transaction.commit();
session.close();
sf.close();
}


@Test
public void test()
{
Students user=new Students(120,"董健","男",new Date(),"四川");
session.save(user);
}
}

注意:

在5.x版的Hibernate中,需要使用ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(config.getProperties()).configure().build();来注册服务
在4.x中使用ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();来注册服务

-------------本文结束啦感谢您阅读-------------
0%