开始之前,我想先理清一个概念,即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之环境搭建的更多相关文章

  1. [Hibernate 1]Hibernate的环境搭建

    一.Hibernate是什么 直接使用JDBC操作数据库的步骤很繁琐,JDBC操作的是关系型数据库,而我们用JAVA开发程序,则使用面向对象的思想.Hibernate正是在这两种不同的模型之间建立关联 ...

  2. Hibernate之环境搭建及demo

    ORM概念 ORM即Object/Relation Mapping, 对象/关系数据库映射.ORM是一种规范,完成面向对象编程语言到关系数据库之间的映射.J2EE中的JPA就是一种ORM规范. ORM ...

  3. 初识Hibernate之环境搭建

         相信所有做后端的程序员同行们,没有不知道Hibernate大名的.这是一个经典的轻量级Java EE持久层的解决方案,它使得我们程序员能以面向对象的思维操作传统的关系型数据库,这也是其存在的 ...

  4. 初始hibernate 和环境搭建

    hibernate是一个开源的数据持久化框架. hibernate的优点: hibernate进行操作数据库提高了代码的开发速度,大大降低了代码量,降低了维护成本. hibernate支持许多面向对象 ...

  5. Hibernate开发环境搭建

    一.下载Hibernate包的下载 官网地址:http://hibernate.org/orm/ 下载版本:hibernate-release-4.3.11.Final 二.Hibernate jar ...

  6. hibernate框架环境搭建与使用

    搭建环境 一.新建一个项目 , 导包   一个是hibernate的jar包,一个是jdbc的jar包 hibernate的jar包 这些jar包全部导入 二.配置Hibernate. 1.建立hib ...

  7. (01)hibernate框架环境搭建及测试

    ---恢复内容开始--- 1.创建javaweb项目 2.导包 hibernate包 hibernate\lib\required\*.jar 数据库驱动包 mysql-connector-java- ...

  8. Hibernate项目环境搭建

    1.首先在eclipse里面新建一个Java工程. 2.在数据库中新建一个数据库(无需创建表,有Hibernate生成). 3.在项目中导入Hibernate所依赖的jar包,该jar包可以在此下载: ...

  9. maven+Hibernate+mysql环境搭建

    项目结构图如下 一,首先是添加依赖pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

随机推荐

  1. 激活phpstorm10.0.1

    注册时选择“License server”输入“http://idea.lanyus.com/”点击“OK”快速激活JetBrains系列产品

  2. service structure flowchart [mobile to server via HTTP RESTful API]

    Modern flowchart for mobile, server, and etc.. communication This has something to do with these sou ...

  3. Lock与synchronized 的区别

    多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1.ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候 ...

  4. C#基础知识——类的继承

    继承是C#的三大特性之一,它实现了多态性和代码复用 我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类. Student.Teacher.Driv ...

  5. [资源]鸟哥的Linux私房菜

    http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行: 当为[ - ]则是文件 ...

  6. android 轮播图

    轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考 目前测试图片为mipmap中的图片 没有写从网络加载 ...

  7. linux基础命令大全

    编辑器 ed vi/vim (交互式) sed (非交互) vi/vim 的使用 1.命令模式 移动光标 方向键 hjkl H L M G 1G nG 复制行 yy nyy 粘贴 p 删除行 dd n ...

  8. DBCP连接池的使用

    1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...

  9. SDN理解:SDN现状

    目录 - SDN现状 - (一)SDN现状 - SDN诞生的背景 - SDN的介绍 - (二)SDN领域的相关组织和发展现状 - 1.ONF - 2.OpenDaylight - 3. IETF -  ...

  10. 如何通过fpmmm和zabbix来监控客户机上MariaDB数据库运行情况

    首先在客户机安装MariaDB和zabbix,参考上一篇 安装fpmmm的过程主要参考[1]. 安装fpmmm的依赖 shell> yum install php-cli php-process ...