基于maven搭建hibernate运行环境
准备案例需要的数据库表和测试数据
建表语句:
- create table DEPARTMENT (
- DEPT_ID integer not null,
- DEPT_NAME varchar(255) not null,
- DEPT_NO varchar(20) not null,
- LOCATION varchar(255),
- primary key (DEPT_ID),
- unique (DEPT_NO)
- );
- create table EMPLOYEE (
- EMP_ID bigint not null,
- EMP_NAME varchar(50) not null,
- EMP_NO varchar(20) not null,
- HIRE_DATE date not null,
- IMAGE longblob,
- JOB varchar(30) not null,
- SALARY float not null,
- DEPT_ID integer not null,
- MNG_ID bigint,
- primary key (EMP_ID),
- unique (EMP_NO)
- );
- create table SALARY_GRADE (
- GRADE integer not null,
- HIGH_SALARY float not null,
- LOW_SALARY float not null,
- primary key (GRADE)
- );
- create table TIMEKEEPER (
- Timekeeper_Id varchar(36) not null,
- Date_Time datetime not null,
- In_Out char(1) not null,
- EMP_ID bigint not null,
- primary key (Timekeeper_Id)
- );
- alter table EMPLOYEE
- add index FK75C8D6AE269A3C9 (DEPT_ID),
- add constraint FK75C8D6AE269A3C9
- foreign key (DEPT_ID)
- references DEPARTMENT (DEPT_ID);
- alter table EMPLOYEE
- add index FK75C8D6AE6106A42 (EMP_ID),
- add constraint FK75C8D6AE6106A42
- foreign key (EMP_ID)
- references EMPLOYEE (EMP_ID);
- alter table EMPLOYEE
- add index FK75C8D6AE13C12F64 (MNG_ID),
- add constraint FK75C8D6AE13C12F64
- foreign key (MNG_ID)
- references EMPLOYEE (EMP_ID);
- alter table TIMEKEEPER
- add index FK744D9BFF6106A42 (EMP_ID),
- add constraint FK744D9BFF6106A42
- foreign key (EMP_ID)
- references EMPLOYEE (EMP_ID);
初始化数据
- insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
- values (10, 'ACCOUNTING', 'D10', 'NEW YORK');
- insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
- values (20, 'RESEARCH', 'D20', 'DALLAS');
- insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
- values (30, 'SALES', 'D30', 'CHICAGO');
- insert into Department (DEPT_ID, DEPT_NAME, DEPT_NO, LOCATION)
- values (40, 'OPERATIONS', 'D40', 'BOSTON');
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7839, 'KING', 'E7839', Str_To_Date('17-11-1981', '%d-%m-%Y'), 'PRESIDENT', 5000, 10, null);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7566, 'JONES', 'E7566', Str_To_Date('02-04-1981', '%d-%m-%Y'), 'MANAGER', 2975, 20, 7839);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7902, 'FORD', 'E7902', Str_To_Date('03-12-1981', '%d-%m-%Y'), 'ANALYST', 3000, 20, 7566);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7369, 'SMITH', 'E7369', Str_To_Date('17-12-1980', '%d-%m-%Y'), 'CLERK', 800, 20, 7902);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7698, 'BLAKE', 'E7698', Str_To_Date('01-05-1981', '%d-%m-%Y'), 'MANAGER', 2850, 30, 7839);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7499, 'ALLEN', 'E7499', Str_To_Date('20-02-1981', '%d-%m-%Y'), 'SALESMAN', 1600, 30, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7521, 'WARD', 'E7521', Str_To_Date('22-02-1981', '%d-%m-%Y'), 'SALESMAN', 1250, 30, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7654, 'MARTIN', 'E7654', Str_To_Date('28-09-1981', '%d-%m-%Y'), 'SALESMAN', 1250, 30, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7782, 'CLARK', 'E7782', Str_To_Date('09-06-1981', '%d-%m-%Y'), 'MANAGER', 2450, 30, 7839);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7788, 'SCOTT', 'E7788', Str_To_Date('19-04-1987', '%d-%m-%Y'), 'ANALYST', 3000, 20, 7566);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7844, 'TURNER', 'E7844', Str_To_Date('08-09-1981', '%d-%m-%Y'), 'SALESMAN', 1500, 30, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7876, 'ADAMS', 'E7876', Str_To_Date('23-05-1987', '%d-%m-%Y'), 'CLERK', 1100, 20, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7900, 'ADAMS', 'E7900', Str_To_Date('03-12-1981', '%d-%m-%Y'), 'CLERK', 950, 30, 7698);
- insert into Employee (EMP_ID, EMP_NAME, EMP_NO, HIRE_DATE, JOB, SALARY, DEPT_ID, MNG_ID)
- values (7934, 'MILLER', 'E7934', Str_To_Date('23-01-1982', '%d-%m-%Y'), 'CLERK', 1300, 10, 7698);
- insert into Salary_Grade (GRADE, HIGH_SALARY, LOW_SALARY)
- values (1, 9999, 3001);
使用idea新建一个空的maven工程,并在该项目中增加hibernate的依赖、jdbc驱动依赖、log4j日志依赖、junit依赖。
该项目的pom.xml文件依赖内容如下:
- <dependencies>
- <!--junit依赖,用于单元测试-->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <!--添加hibernate的核心依赖-->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>5.0.12.Final</version>
- </dependency>
- <!--添加mysql的jdbc驱动-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.41</version>
- </dependency>
- <!--添加log4j依赖-->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- </dependency>
- </dependencies>
在resource目录下新建hibernate配置文件,hibernate.cfg.xml,该配置文件为hibernate的全局配置文件,用于定义hibernate的一些全局配置。目前仅配置数据库连接的相关信息
- <?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>
- <!-- Database connection settings -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/dept?serverTimezone=UTC</property>
- <property name="connection.username">root</property>
- <property name="connection.password">12345678</property>
- <!-- JDBC connection pool (use the built-in) -->
- <property name="connection.pool_size">1</property>
- <!-- SQL dialect ,定义数据库方言-->
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- Enable Hibernate's automatic session context management -->
- <property name="current_session_context_class">thread</property>
- <!-- Echo all executed SQL to stdout -->
- <property name="show_sql">true</property>
- </session-factory>
- </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的方法,代码如下:
- package com.deng.hibernate.util;
- import com.deng.hibernate.bean.Department;
- import com.deng.hibernate.bean.Employee;
- import org.hibernate.Session;
- import org.hibernate.boot.registry.StandardServiceRegistry;
- import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.service.ServiceRegistry;
- /**
- * hibernate工具类
- */
- public class HibernateUtils {
- private static org.hibernate.SessionFactory sessionFactory;
- private static Configuration configuration = new Configuration();
- private static StandardServiceRegistry serviceRegistry;
- static {
- try {
- configuration.configure("hibernate.cfg.xml");
- serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
- sessionFactory = configuration.buildSessionFactory(serviceRegistry);
- } catch (Exception e) {
- System.err.println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- /**
- * 获取session,所有的hibernate操作均基于session进行
- * @return
- */
- public static Session getSession(){
- return sessionFactory.openSession();
- }
- }
若运行main方法结果出现
代表环境搭建成功。
基于maven搭建hibernate运行环境的更多相关文章
- Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...
- Intellij IDEA使用Maven搭建spark开发环境(scala)
如何一步一步地在Intellij IDEA使用Maven搭建spark开发环境,并基于scala编写简单的spark中wordcount实例. 1.准备工作 首先需要在你电脑上安装jdk和scala以 ...
- JDK+Tomcat搭建JSP运行环境--JSP基础
一.搭建JSP运行环境之前需要了解的基本知识 配置JSP运行环境之前,我们需要了解JSP的运行机制.只有了解JSP运行机制后,我们才能知道为什么要搭建JSP运行环境?如何去搭建JSP运行环境?为什么要 ...
- OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境
上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...
- 9款一键快速搭建PHP运行环境的好工具
9款一键快速搭建PHP运行环境的好工具 胡倡萌 2011/02/19 网络资源 77,063 1 内容提要: 建立一个PHP网站,首先需要搭建PHP的开发和运行环境,对于PHP初学者也是一个难 ...
- 漫游Kafka实战篇之搭建Kafka运行环境
接下来一步一步搭建Kafka运行环境. Step 1: 下载Kafka 点击下载最新的版本并解压. > tar -xzf kafka_2.9.2-0.8.1.1.tgz > cd kafk ...
- 【PHP】linux搭建PHP运行环境
之前在windows下写了hello world,终归是不够用啊,因为开发环境是Linux,怎么办呢~~~学习学习再学习 写在前面的话:我从百度文库的一个文章里摘出来的,原文章名称<Linux下 ...
- Windows7下搭建Django运行环境
一直都是在Linux环境下搭建django的运行环境,开学因为需要叫前端的同学帮忙修改模板,所以需要在Windows下搭建起运行环境,想来PHP倒是有不少集成开发环境,Python倒是少的可怜…只在w ...
- Windows上搭建Flume运行环境
1.如果没有安装过Java环境,则需首先安装JDK. 可参考<Windows上搭建Kafka运行环境>中的搭建环境安装JDK部分 2.官方下载Flume(当前为apache-flume-1 ...
随机推荐
- 聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的
todo defineProperty() 参考: https://www.cnblogs.com/wangjiachen666/p/9883916.html
- (三)mysql -- 逻辑控制
条件控制 CASE validity_date THEN '月' THEN '年' ELSE '季' END CASE THEN '月' THEN '年' ELSE '季' END 循环控制 待补充
- XAMPP 1.8.2-2 Apache Web Server won't start, always stops immediately
sudo apachectl stop apachectl是Apache超文本传输协议服务器的前端程序. 其设计意图是帮助管理员控制Apachehttpd后台的功能. MacOS中安装完Apache之 ...
- JDK中String类的源码分析(一)
1.String类是final的,不允许被继承 /** The value is used for character storage. */ private final char value[]; ...
- fail-fast与fail-safe机制
----以下来自网址----- http://blog.csdn.net/ch717828/article/details/46892051 什么是 fail-fast 机制? fail-fast机制 ...
- TiDB单机安装测试
TiDB单机安装测试 CentOS7.3安装MySQL5.6 1:下载TiDB安装包# cd /opt/source# wget http://download.pingcap.org/tidb-la ...
- 技术文档翻译-------glove readme(1)
Package Contents To train your own GloVe vectors, first you tools. An example is included in demo.sh ...
- 2019 ccpc 秦皇岛
D 如果1/n是有限小数,不停乘以10,一定在有限次之后成为一个整数. 10的质因子只有2和5,只要保证分母的质因子只有2和5即可 #include <iostream> #include ...
- Python 笔试集(3):编译/解释?动态/静态?强/弱?Python 是一门怎样的语言
面试题 解释/编译?动态/静态?强/弱?Python 到底是一门怎样的语言? 编译 or 解释? 编译.解释都是指将(与人类亲和的)编程语言翻译成(计算机能够理解的)机器语言(Machine code ...
- Linux_LVM、RAID_RHEL7
目录 目录 LVM逻辑卷管理 把物理分区初始化为物理卷 创建卷组 建立逻辑卷 格式化 挂载 vg拓展操作 lv扩展操作 RAID RAID 类型 RAID0条带化 RAID1镜像 RAID5条带冗余 ...