Hibernate 连接本地MySQL 服务器

时间:2022-09-21 14:25:51

1. 为什么写这篇博客

我并不是一个博客爱好者,在工作过程中也很少写博客。在网上,总是从别人的博文汲取营养,似乎有些无耻。

前两个礼拜,把2年前阅读的技术书籍又重新读了一遍,觉得认知又有了新的进步。

数据库操作是网络编程的基本组成部分,而我作为一个非计算机科班出身,且没有任何数据库常识的门外汉, 在阅读程序代码时,有诸多不便。

但我是一个不肯轻易放弃的人,为了理解Dao和map文件的意义,我曾经试图去阅读hibernate_reference,但效果不是很好。

直到前几天,我阅读http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html, 才发现hibernate其实不复杂。

在阅读用户手册时,我遇到一个问题,就是没有办法在本地练习那些概念。怎样建立一个工程,能够连接到本地数据库服务器,让我真正理解用户手册中的一些概念?

我在网上查找了很多资料,历经了无数次的实验终于找到了一个方法。

为了让那些喜欢从头开始学习Hibernate的人们,在入门时少走弯路,把我建立java程序到数据库连接的经历记录下来,以供参考。不足之处可以指正。


2. 安装本地数据库服务器

南洋理工大学的一篇博客详细讲述的MySQL 5.7的安装和使用过程 http://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html

把重要的翻译成中文, 方便英文不是很好的阅读。

I 下载和安装:

MAC:

下载

我用的是Mac, 先写Mac(这个步骤我验证过的)

http://dev.mysql.com/downloads/mysql/下载MySQL "DMG Archive"

选择“Mac OS X“平台


安装

Mac下的安装很简单,点击下载的.dmg文件,双击其中的.pkg文件。

在安装过程中,会生成一个超级用户root和密码,一定要记下这个密码,最好能把这个屏幕拍下来。


Windows:

下载

http://dev.mysql.com/downloads/mysql/ 下载zip文件,选择“Microsoft Windows“ 平台。


安装

创建一个工程目录, 如"d:\myProject", 或 "c:\myProject"

把解压的文件放到目录下, 如d:\myProject\mysql-5.7.{xx}-winx64 为了便于拼写, 简为d:\myProject\mysql


cd d:\myProject\mysql\bin

mysqld --initialize --console

记下生成的超级用户root和密码,一定要记下这个密码,最好能把这个屏幕拍下来。


II 启动MySQL 服务器

Mac:

点击苹果图标-》系统偏好-》MySQL-》启动


Windows:

cd d:\myProject\mysql\bin

mysqld --initialize --console


III 创建用户

Mac客户端接入:

cd /usr/local/mysql/bin

./mysql -u root -p

输入密码


mysql-> create user 'mysql'@'localhost' identified by 'mysql_2016'


Windows 客户端接入:

cd d:\myProject\mysql\bin

mysql -u root -p


mysql-> create user 'mysql'@'localhost' identified by 'mysql_2016'


IV 创建数据库

通过mysql帐号登陆服务器:


mysql -u mysql -p

mysql-> create database if not exists testdb


至此服务器端的配置基本完成


3 创建Java工程

公司内部有一套成熟的机制,大家都是照猫画虎,搬来运去。但是离开公司的平台,我想自己创建一套环境。

IDE IntelliJ IDEA

https://www.jetbrains.com/idea/#chooseYourEdition选择非付费版本


创建Gradle工程

在build.gradle,添加

compile 'org.hibernate:hibernate-core:5.2.2.Final'
compile 'mysql:mysql-connector-java:6.0.4'

以上是添加hibernate和mysql 驱动的依赖


build工程,如果一切顺利,依赖库可以看到:

mysql:mysql-connector-java:6.0.4

org.hibernate:hibernate-core:5.2.2.Final


4 Hibernate.cfg.xml


<?xml version='1.0' encoding='utf-8'?>
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
<property name="hibernate.connection.username">mysql</property>
<property name="hibernate.connection.password">mysql_2016</property>

<property name="hibernate.connection.pool_size">5</property>

<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="connection.useSSL">false</property>

<property name="hibernate.hbm2ddl.auto">create-drop</property>

</session-factory>


</hibernate-configuration>


5 生成sessionFactory

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure("hibernate.cfg.xml")
.build();
try {
sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
} catch (Exception e) {
System.out.println("Build Session Factory meet exception");
e.printStackTrace();
StandardServiceRegistryBuilder.destroy(registry);
throw new RuntimeException(e);
}


一切都已经完备,只要添加一个Entity,就可以工作了