Hibernate之环境搭建
开始之前,我想先理清一个概念,即ORM是什么?
ORM介绍
全称:Object/Relation Mapping,即对象/关系映射。
ORM也可以理解为一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。
ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:
完成面向对象的程序设计语言到关系数据库的映射;
基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势。
ORM规范映射思想:
一个表映射成一个类;
一行记录(一条数据)映射成一个对象;
一列(一个字段)映射成对象的属性。
Hibernate介绍
那么Hibernate则是目前最流行的ORM框架之一,它是对JDBC的封装。Hibernate采用了低侵入式的设计模式,也即完全采用普通的Java对象(POJO),而不需要继承Hibernate的某个超类或实现Hibernate的某个接口。目前最新版本5.1。
Hibernate下载:http://hibernate.org/orm/
环境搭建
1、新建一个Java项目Test,在Test下新建一个lib文件夹,将下载的hibernate/lib/required下的Jar文件拷贝到lib文件夹下,然后全选—右键—Build Path—Add To Path;
不要忘了把MySQL的驱动Jar包也复制进来。
2、新建一个实体类Person,这里通过注解的方式将实体类与数据表映射,而不是通过.hbm.xml文件的方式建立映射关系。
package com.diesel.entity; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity
@Table(name="t_person")
public class Person { @Id
@GeneratedValue(generator="systemUuid")
@GenericGenerator(name="systemUuid", strategy="uuid")
@Column(name="id")
private String id; @Column(name="name")
private String name; @Column(name="password")
private String password; @Column(name="age")
private Integer age; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", password=" + password + ", age=" + age + "]";
} }
每一张表都会有一个唯一标识Id,可以通过注解的方式设置Id的生成规则,像上面代码中的方式,就是利用UUID来作为表Id的。或者也可以这样:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
这表示自动增长类型的Id。更多关于其他的方式,这里就不再列举了。
3、配置hibernate.cfg.xml,也就是告诉Hibernate要连接哪个数据库,并且配置一些其他属性。
<?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> <!-- Database connection settings -->
<!-- <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost/TestDB</property> --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/Test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property> <!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</property> <!-- Enable Hibernate's automatic session context management -->
<!-- <property name="current_session_context_class">thread</property> --> <!-- <property name="cache.use_query_cache">true</property> -->
<!-- <property name="cache.use_second_level_cache">true</property> -->
<!-- <property name="cache.use_structured_entries">true</property> -->
<!-- <property name="cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</property> -->
<!-- <property name="net.sf.ehcache.configurationResourceName">/hibernate-config/ehcache.xml</property> -->
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property> <mapping class="com.diesel.entity.Person"/> </session-factory> </hibernate-configuration>
4、新建一个测试类。
package com.diesel.test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.diesel.entity.Person; public class Main { public static void main(String[] args) throws Exception { Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession(); Person p = new Person();
p.setName("admin");
p.setPassword("123456"); Transaction t = session.beginTransaction();
session.save(p);
t.commit(); }
}
5、在数据库Test中新建一张表t_person。
create table t_person(
id varchar(32) not null primary key,
name varchar(25) not null,
password varchar(25) not null,
age int
);
运行测试类,如果能在t_person表中看到新增的记录,则说明程序执行成功了。
Hibernate之环境搭建的更多相关文章
- [Hibernate 1]Hibernate的环境搭建
一.Hibernate是什么 直接使用JDBC操作数据库的步骤很繁琐,JDBC操作的是关系型数据库,而我们用JAVA开发程序,则使用面向对象的思想.Hibernate正是在这两种不同的模型之间建立关联 ...
- Hibernate之环境搭建及demo
ORM概念 ORM即Object/Relation Mapping, 对象/关系数据库映射.ORM是一种规范,完成面向对象编程语言到关系数据库之间的映射.J2EE中的JPA就是一种ORM规范. ORM ...
- 初识Hibernate之环境搭建
相信所有做后端的程序员同行们,没有不知道Hibernate大名的.这是一个经典的轻量级Java EE持久层的解决方案,它使得我们程序员能以面向对象的思维操作传统的关系型数据库,这也是其存在的 ...
- 初始hibernate 和环境搭建
hibernate是一个开源的数据持久化框架. hibernate的优点: hibernate进行操作数据库提高了代码的开发速度,大大降低了代码量,降低了维护成本. hibernate支持许多面向对象 ...
- Hibernate开发环境搭建
一.下载Hibernate包的下载 官网地址:http://hibernate.org/orm/ 下载版本:hibernate-release-4.3.11.Final 二.Hibernate jar ...
- hibernate框架环境搭建与使用
搭建环境 一.新建一个项目 , 导包 一个是hibernate的jar包,一个是jdbc的jar包 hibernate的jar包 这些jar包全部导入 二.配置Hibernate. 1.建立hib ...
- (01)hibernate框架环境搭建及测试
---恢复内容开始--- 1.创建javaweb项目 2.导包 hibernate包 hibernate\lib\required\*.jar 数据库驱动包 mysql-connector-java- ...
- Hibernate项目环境搭建
1.首先在eclipse里面新建一个Java工程. 2.在数据库中新建一个数据库(无需创建表,有Hibernate生成). 3.在项目中导入Hibernate所依赖的jar包,该jar包可以在此下载: ...
- maven+Hibernate+mysql环境搭建
项目结构图如下 一,首先是添加依赖pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...
随机推荐
- 什么是LeapMotion
LeapMotion预览——什么是LeapMotion LeapMotion预览 这个就是LeapMotion: 原文转自: LeapMotion预览 LeapMotion 官网:http://l ...
- 图解JOIN
阅读导航 一.概要 二.JOIN分类 三.JOIN分类详解 一.概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操 ...
- Hackers’ Crackdown-----UVA11825-----DP+状态压缩
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 当你在试衣间试衣服,请你务必想起wait()与notify()
在学习多线程的时候,你无法逃避sleep.wait.notify.notifyAll的关键字,我们肯定是对sleep用的最多,即使你写个Demo也要经常用到Thread.sleep(xxx)模拟等待的 ...
- Mybatis原理图
Mybatis原理图 MyBatis 是一个基于Java的持久层框架.它提供的持久层框架包括SQL Maps和Data Access Objects(DAO). MyBatis 是支持普通 SQL查询 ...
- PHP多维数组元素操作类
我的框架里面一个多维数组元素操作类,主要用于读取数组中配置数据,可以通过字符串节点的方式:a.b.c 来获取和设置元素,以及多维数组的覆盖,有需求的可以参考下吧! <?php /** * Cre ...
- 第10章:DOM
- windows下运行hadoop2.7.2
1.下载hadoop-2.7.2.tar.gz 2.解压到D:\hadoop\ 3.配置HADOOP_HOME环境变量 4.将%HADOOP_HOME%\bin目录添加到path环境变量中 5.配置J ...
- c# PictureBox 的图像上使用鼠标画矩形框
C# 中在图像上画框,通过鼠标来实现主要有四个消息响应函数MouseDown, MouseMove, MouseUp, Paint重绘函数实现.当鼠标键按下时开始画框,鼠标键抬起时画框结束. Poin ...
- C#笔记(一)常量
常量必须在声明时初始化 常量的值必须能在编译时用于计算.因此,不能用从一个变量中提取的值来初始化常量. 常量总是静态的.但注意,不必(实际上,是不允许)在常量声明中包含修饰符static .