准备案例需要的数据库表和测试数据

建表语句:

  1. create table DEPARTMENT (
  2. DEPT_ID integer not null,
  3. DEPT_NAME varchar(255) not null,
  4. DEPT_NO varchar(20) not null,
  5. LOCATION varchar(255),
  6. primary key (DEPT_ID),
  7. unique (DEPT_NO)
  8. );
  9.  
  10. create table EMPLOYEE (
  11. EMP_ID bigint not null,
  12. EMP_NAME varchar(50) not null,
  13. EMP_NO varchar(20) not null,
  14. HIRE_DATE date not null,
  15. IMAGE longblob,
  16. JOB varchar(30) not null,
  17. SALARY float not null,
  18. DEPT_ID integer not null,
  19. MNG_ID bigint,
  20. primary key (EMP_ID),
  21. unique (EMP_NO)
  22. );
  23.  
  24. create table SALARY_GRADE (
  25. GRADE integer not null,
  26. HIGH_SALARY float not null,
  27. LOW_SALARY float not null,
  28. primary key (GRADE)
  29. );
  30.  
  31. create table TIMEKEEPER (
  32. Timekeeper_Id varchar(36) not null,
  33. Date_Time datetime not null,
  34. In_Out char(1) not null,
  35. EMP_ID bigint not null,
  36. primary key (Timekeeper_Id)
  37. );
  38.  
  39. alter table EMPLOYEE
  40. add index FK75C8D6AE269A3C9 (DEPT_ID),
  41. add constraint FK75C8D6AE269A3C9
  42. foreign key (DEPT_ID)
  43. references DEPARTMENT (DEPT_ID);
  44.  
  45. alter table EMPLOYEE
  46. add index FK75C8D6AE6106A42 (EMP_ID),
  47. add constraint FK75C8D6AE6106A42
  48. foreign key (EMP_ID)
  49. references EMPLOYEE (EMP_ID);
  50.  
  51. alter table EMPLOYEE
  52. add index FK75C8D6AE13C12F64 (MNG_ID),
  53. add constraint FK75C8D6AE13C12F64
  54. foreign key (MNG_ID)
  55. references EMPLOYEE (EMP_ID);
  56.  
  57. alter table TIMEKEEPER
  58. add index FK744D9BFF6106A42 (EMP_ID),
  59. add constraint FK744D9BFF6106A42
  60. foreign key (EMP_ID)
  61. references EMPLOYEE (EMP_ID);

初始化数据

  1. insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
  2. values (10, 'ACCOUNTING', 'D10', 'NEW YORK');
  3.  
  4. insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
  5. values (20, 'RESEARCH', 'D20', 'DALLAS');
  6.  
  7. insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
  8. values (30, 'SALES', 'D30', 'CHICAGO');
  9.  
  10. insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
  11. values (40, 'OPERATIONS', 'D40', 'BOSTON');
  12.  
  13. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  14. values (7839, 'KING', 'E7839', Str_To_Date('17-11-1981', '%d-%m-%Y'), 'PRESIDENT', 5000, 10, null);
  15.  
  16. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  17. values (7566, 'JONES', 'E7566', Str_To_Date('02-04-1981', '%d-%m-%Y'), 'MANAGER', 2975, 20, 7839);
  18.  
  19. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  20. values (7902, 'FORD', 'E7902', Str_To_Date('03-12-1981', '%d-%m-%Y'), 'ANALYST', 3000, 20, 7566);
  21.  
  22. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  23. values (7369, 'SMITH', 'E7369', Str_To_Date('17-12-1980', '%d-%m-%Y'), 'CLERK', 800, 20, 7902);
  24.  
  25. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  26. values (7698, 'BLAKE', 'E7698', Str_To_Date('01-05-1981', '%d-%m-%Y'), 'MANAGER', 2850, 30, 7839);
  27.  
  28. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  29. values (7499, 'ALLEN', 'E7499', Str_To_Date('20-02-1981', '%d-%m-%Y'), 'SALESMAN', 1600, 30, 7698);
  30.  
  31. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  32. values (7521, 'WARD', 'E7521', Str_To_Date('22-02-1981', '%d-%m-%Y'), 'SALESMAN', 1250, 30, 7698);
  33.  
  34. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  35. values (7654, 'MARTIN', 'E7654', Str_To_Date('28-09-1981', '%d-%m-%Y'), 'SALESMAN', 1250, 30, 7698);
  36.  
  37. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  38. values (7782, 'CLARK', 'E7782', Str_To_Date('09-06-1981', '%d-%m-%Y'), 'MANAGER', 2450, 30, 7839);
  39.  
  40. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  41. values (7788, 'SCOTT', 'E7788', Str_To_Date('19-04-1987', '%d-%m-%Y'), 'ANALYST', 3000, 20, 7566);
  42.  
  43. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  44. values (7844, 'TURNER', 'E7844', Str_To_Date('08-09-1981', '%d-%m-%Y'), 'SALESMAN', 1500, 30, 7698);
  45.  
  46. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  47. values (7876, 'ADAMS', 'E7876', Str_To_Date('23-05-1987', '%d-%m-%Y'), 'CLERK', 1100, 20, 7698);
  48.  
  49. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  50. values (7900, 'ADAMS', 'E7900', Str_To_Date('03-12-1981', '%d-%m-%Y'), 'CLERK', 950, 30, 7698);
  51.  
  52. insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
  53. values (7934, 'MILLER', 'E7934', Str_To_Date('23-01-1982', '%d-%m-%Y'), 'CLERK', 1300, 10, 7698);
  54.  
  55. insert into Salary_Grade (GRADE, HIGH_SALARY, LOW_SALARY)
  56. values (1, 9999, 3001);

使用idea新建一个空的maven工程,并在该项目中增加hibernate的依赖、jdbc驱动依赖、log4j日志依赖、junit依赖。

该项目的pom.xml文件依赖内容如下:

  1. <dependencies>
  2. <!--junit依赖,用于单元测试-->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>4.12</version>
  7. <scope>test</scope>
  8. </dependency>
  9. <!--添加hibernate的核心依赖-->
  10. <dependency>
  11. <groupId>org.hibernate</groupId>
  12. <artifactId>hibernate-core</artifactId>
  13. <version>5.0.12.Final</version>
  14. </dependency>
  15. <!--添加mysql的jdbc驱动-->
  16. <dependency>
  17. <groupId>mysql</groupId>
  18. <artifactId>mysql-connector-java</artifactId>
  19. <version>5.1.41</version>
  20. </dependency>
  21. <!--添加log4j依赖-->
  22. <dependency>
  23. <groupId>log4j</groupId>
  24. <artifactId>log4j</artifactId>
  25. <version>1.2.17</version>
  26. </dependency>
  27. </dependencies>

在resource目录下新建hibernate配置文件,hibernate.cfg.xml,该配置文件为hibernate的全局配置文件,用于定义hibernate的一些全局配置。目前仅配置数据库连接的相关信息

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7.  
  8. <session-factory>
  9. <!-- Database connection settings -->
  10. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  11. <property name="connection.url">jdbc:mysql://localhost:3306/dept?serverTimezone=UTC</property>
  12. <property name="connection.username">root</property>
  13. <property name="connection.password">12345678</property>
  14.  
  15. <!-- JDBC connection pool (use the built-in) -->
  16. <property name="connection.pool_size">1</property>
  17.  
  18. <!-- SQL dialect ,定义数据库方言-->
  19. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  20.  
  21. <!-- Enable Hibernate's automatic session context management -->
  22. <property name="current_session_context_class">thread</property>
  23.  
  24. <!-- Echo all executed SQL to stdout -->
  25. <property name="show_sql">true</property>
  26. </session-factory>
  27.  
  28. </hibernate-configuration>

每种数据库都有一个单独的方言, 例如:

Oracle方言:

  • org.hibernate.dialect.Oracle10gDialect(Dùngcho 10g&11g)
  • org.hibernate.dialect.Oracle12cDialect

SQL Server方言:

  • org.hibernate.dialect.SQLServerDialect并
  • org.hibernate.dialect.SQLServer2012Dialect
  • org.hibernate.dialect.SQLServer2008Dialect

MySQL方言

  • org.hibernate.dialect.MySQLDialect
  • org.hibernate.dialect.MySQL5Dialect

什么是方言?

Dialect是一个使用Hibernate的方式将数据库的数据类型转换为Java的数据类型,反之亦然。此外,它用于定义将HSQL(Hibernate SQL)的函数转换为数据中的函数的方式,如下列出的一部分 -

Java SQL类型 Oracle MySQL SQL Server
Types.BIT number(1,0) bit bit
Types.BIGINT number(19,0) bigin bigint
Types.DATE date date date
…….
Types.CLOB clob longtext varchar(MAX)
Types.BLOB blob longblob varbinary(MAX)

创建HibernateUtils类,用于加载hibernate配置信息,以及提供获取session的方法,代码如下:

  1. package com.deng.hibernate.util;
  2.  
  3. import com.deng.hibernate.bean.Department;
  4. import com.deng.hibernate.bean.Employee;
  5. import org.hibernate.Session;
  6. import org.hibernate.boot.registry.StandardServiceRegistry;
  7. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  8. import org.hibernate.cfg.Configuration;
  9. import org.hibernate.service.ServiceRegistry;
  10.  
  11. /**
  12. * hibernate工具类
  13. */
  14. public class HibernateUtils {
  15.  
  16. private static org.hibernate.SessionFactory sessionFactory;
  17.  
  18. private static Configuration configuration = new Configuration();
  19. private static StandardServiceRegistry serviceRegistry;
  20.  
  21. static {
  22. try {
  23. configuration.configure("hibernate.cfg.xml");
  24. serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
  25. sessionFactory = configuration.buildSessionFactory(serviceRegistry);
  26. } catch (Exception e) {
  27. System.err.println("%%%% Error Creating SessionFactory %%%%");
  28. e.printStackTrace();
  29. }
  30. }
  31.  
  32. /**
  33. * 获取session,所有的hibernate操作均基于session进行
  34. * @return
  35. */
  36. public static Session getSession(){
  37. return sessionFactory.openSession();
  38. }
  39.  
  40. }

若运行main方法结果出现

代表环境搭建成功。

基于maven搭建hibernate运行环境的更多相关文章

  1. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

  2. Intellij IDEA使用Maven搭建spark开发环境(scala)

    如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala以 ...

  3. JDK+Tomcat搭建JSP运行环境--JSP基础

    一.搭建JSP运行环境之前需要了解的基本知识 配置JSP运行环境之前,我们需要了解JSP的运行机制.只有了解JSP运行机制后,我们才能知道为什么要搭建JSP运行环境?如何去搭建JSP运行环境?为什么要 ...

  4. OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境

    上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...

  5. 9款一键快速搭建PHP运行环境的好工具

    9款一键快速搭建PHP运行环境的好工具 胡倡萌 2011/02/19 网络资源 77,063 1     内容提要: 建立一个PHP网站,首先需要搭建PHP的开发和运行环境,对于PHP初学者也是一个难 ...

  6. 漫游Kafka实战篇之搭建Kafka运行环境

    接下来一步一步搭建Kafka运行环境. Step 1: 下载Kafka 点击下载最新的版本并解压. > tar -xzf kafka_2.9.2-0.8.1.1.tgz > cd kafk ...

  7. 【PHP】linux搭建PHP运行环境

    之前在windows下写了hello world,终归是不够用啊,因为开发环境是Linux,怎么办呢~~~学习学习再学习 写在前面的话:我从百度文库的一个文章里摘出来的,原文章名称<Linux下 ...

  8. Windows7下搭建Django运行环境

    一直都是在Linux环境下搭建django的运行环境,开学因为需要叫前端的同学帮忙修改模板,所以需要在Windows下搭建起运行环境,想来PHP倒是有不少集成开发环境,Python倒是少的可怜…只在w ...

  9. Windows上搭建Flume运行环境

    1.如果没有安装过Java环境,则需首先安装JDK. 可参考<Windows上搭建Kafka运行环境>中的搭建环境安装JDK部分 2.官方下载Flume(当前为apache-flume-1 ...

随机推荐

  1. 聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的

    todo defineProperty() 参考: https://www.cnblogs.com/wangjiachen666/p/9883916.html

  2. (三)mysql -- 逻辑控制

    条件控制 CASE validity_date THEN '月' THEN '年' ELSE '季' END CASE THEN '月' THEN '年' ELSE '季' END 循环控制 待补充

  3. XAMPP 1.8.2-2 Apache Web Server won't start, always stops immediately

    sudo apachectl stop apachectl是Apache超文本传输协议服务器的前端程序. 其设计意图是帮助管理员控制Apachehttpd后台的功能. MacOS中安装完Apache之 ...

  4. JDK中String类的源码分析(一)

    1.String类是final的,不允许被继承 /** The value is used for character storage. */ private final char value[]; ...

  5. fail-fast与fail-safe机制

    ----以下来自网址----- http://blog.csdn.net/ch717828/article/details/46892051 什么是 fail-fast 机制? fail-fast机制 ...

  6. TiDB单机安装测试

    TiDB单机安装测试 CentOS7.3安装MySQL5.6 1:下载TiDB安装包# cd /opt/source# wget http://download.pingcap.org/tidb-la ...

  7. 技术文档翻译-------glove readme(1)

    Package Contents To train your own GloVe vectors, first you tools. An example is included in demo.sh ...

  8. 2019 ccpc 秦皇岛

    D 如果1/n是有限小数,不停乘以10,一定在有限次之后成为一个整数. 10的质因子只有2和5,只要保证分母的质因子只有2和5即可 #include <iostream> #include ...

  9. Python 笔试集(3):编译/解释?动态/静态?强/弱?Python 是一门怎样的语言

    面试题 解释/编译?动态/静态?强/弱?Python 到底是一门怎样的语言? 编译 or 解释? 编译.解释都是指将(与人类亲和的)编程语言翻译成(计算机能够理解的)机器语言(Machine code ...

  10. Linux_LVM、RAID_RHEL7

    目录 目录 LVM逻辑卷管理 把物理分区初始化为物理卷 创建卷组 建立逻辑卷 格式化 挂载 vg拓展操作 lv扩展操作 RAID RAID 类型 RAID0条带化 RAID1镜像 RAID5条带冗余 ...