Hibernate(orm框架)(开放源代码的对象关系映射框架)
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Orm:Object relational mapping,对象映射关系,用于对象与关系型数据库关联映射框架。

Demo1:纯java project

搭建步骤:

  第一步:创建数据库表t_user,创建java对象USer.java

  第二步:添加jar包

  第三步:创建映射文件

  第四步:创建hibernate核心配置文件hibernate.cfg.xml

  第五步:测试

以下是详细步骤演示:

项目结构

  第一步:创建数据库表t_user,创建java对象USer.java

#数据库表t_user
CREATE DATABASE hibernate_demo CHARSET 'UTF8'; CREATE TABLE t_use(
id INT(10) PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20) NOT NULL
);
//创建java对象User.java
public class User {
private Integer id;
private String uname;
//getter和setter省略
......
}

  第二步:添加jar包

  第三步:创建映射文件user.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--package:java对象包路径 -->
<hibernate-mapping package="com.jonychen.model">
<!-- 配置对象与table的关系 -->
<class name="User" table="t_user">
<!-- 指定主键name:表示java对象属性名 column -->
<id name="id" column="id" type="integer">
<!--配置主键自增策略 -->
<generator class="native" />
</id>
<!--配置其他属性与字段关联关系 -->
<property name="uname" column="uname" type="string" />
</class>
</hibernate-mapping>

  第四步:hibernate.cfg.xml

<?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>
<!--1、方言:指定数据库类型 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--2、配置数据源 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_demo</property>
<property name="connection.username">root</property>
<property name="connection.password">mysql</property>
<!--打印sql -->
<property name="show_sql">true</property>
<!--3、加载映射文件 -->
<mapping resource="com/jonychen/model/user.hbm.xml" />
</session-factory>
</hibernate-configuration>

第五步,测试

 package com.jonychen.test;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; import com.jonychen.model.User; public class HibernateTest { public static void main(String[] args) {
// TODO Auto-generated method stub
//1、加载配置文件
Configuration cfg=new Configuration();
cfg.configure("hibernate.cfg.xml"); //2、创建sessionFactory
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry); //3、打开全新session
Session session=sessionFactory.openSession(); try {
//事务
Transaction ts=session.beginTransaction(); User user =new User();
user.setUname("jonychen");
//添加数据
session.save(user);
//提交事务
ts.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭连接
if(session!=null) {
session.close();
}
if(sessionFactory!=null) {
sessionFactory.close();
} }
}
}

在Eclipse里添加插件开发Hibernate

Demo2 :Maven版本hibernate

项目结构:

maven项目中除了以上两个文件有变化,其他跟之前搭建的java project一样,以下是有变化的两段代码。

pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jonychen</groupId>
<artifactId>hibernate-demo-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!--hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<!--MySQL数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<!--junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 指定jdk版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

HibernateTest.java

 package com.jonychen.test;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.jonychen.model.User; public class HibernateTest { SessionFactory sessionFactory=null;
Session session=null; @Before
public void init() {
//1、加载配置文件
Configuration cfg=new Configuration();
cfg.configure("hibernate.cfg.xml"); //2、创建sessionFactory
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry); //3、打开全新session
session=sessionFactory.openSession();
} @Test
public void testSave() {
//事务
Transaction ts=session.beginTransaction(); User user =new User();
user.setUname("jony.k.chen");
//添加数据
session.save(user);
//提交事务
ts.commit();
}
@After
public void destory() {
//关闭连接
if(session!=null) {
session.close();
}
if(sessionFactory!=null) {
sessionFactory.close();
}
}
}

友情提醒:

测试的时候如果报错org.hibernate.MappingException: Unknown entity,说明是版本问题,在pom.xml中调整版本号即可,亲测有效!

Hibernate从入门到上手(纯java project、Maven版本hibernate)的更多相关文章

  1. hibernate设置二级缓存时报错java.lang.NoClassDefFoundError: org/hibernate/engine/jndi/JndiNameException

    错误提示大概意思是,没有类定义错误,就是找不到要使用的hibernate二级缓存管理引擎类.我在这用的是ehcache二级轻量级缓存,报错原因可能是导入的jar包版本和使用的hibernate框架核心 ...

  2. Hibernate报错:Caused by: java.sql.SQLException: Field 'ID' doesn't have a default value

    问题一: 报错如下: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assig ...

  3. hibernate 级联删除报更新失败的问题(org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update)

    首先hibernate级联删除的前提是,首先需要在映射文件中配置,配置多表之间的关联关系: 下面以部门表(Dept)和员工表(Emp)为例: 1.在Emp.hbm.xml映射文件中配置many-to- ...

  4. java三大框架之一hibernate使用入门

    综述:Hibernate的作用就是让实体类与数据库映射,使数据持久化,用于替代JDBC,使我们不致于写那么多sql语句代码. 1. 首先在官网www.hibernate.org下载hibernate包 ...

  5. Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)

    Hibernate介绍:Hibernate是一种“对象-关系型数据映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联,在Hibernate中映射文件通常以&qu ...

  6. Hibernate的入门使用

    数据在各个层次之间流转,在流转过程中会发生数据类型转换等一系列的交互问题.java与html的交互解决方案是struts2提供的OGNL(对象导航图语言),而java与数据库之间的技术解决方案是ORM ...

  7. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  8. Struts+Spring+Hibernate整合入门详解

    Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者:  Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念       St ...

  9. Hibernate基础入门

    Hibernate是一个开放源代码的对象关系映射框架,它将POJO与数据库表之间建立映射关系.是全自动的ORM框架,可以自动生成SQL语句并自动执行.它对JDBC进行了非常轻量级的封装,使程序员可以随 ...

随机推荐

  1. Interllij IDEA 注释模板(类和方法)

    类上的注释: file->setting->Editor->Filr and Code Templates->Includes->File Header /** * @A ...

  2. PHP7 微信支付回调失败 解决

    升级完PHP7 发现微信支付回调失败.原来是 $GLOBALS['HTTP_RAW_POST_DATA'];没有定义的问题.php7 移除了这个全局变量. 问题代码如下: 微信API :WxPay.A ...

  3. python笔记二:常用数据类型操作

    1.切片:常用于取list或tuple的部分元素的操作 1)l=[1,2,3,4,5,6] l[:3]表示取前3个值,l[1:5]表示1到5个值, L[-3:]从列表最后往前数即最后3个数.... 2 ...

  4. Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D. Jury Meeting(双指针模拟)

    D. Jury Meeting time limit per test 1 second memory limit per test 512 megabytes input standard inpu ...

  5. Codeforces Round #165 (Div. 1) Greenhouse Effect(DP)

    Greenhouse Effect time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  6. 初生牛犊:Windows下Anti-sandboxes技术探究

    由于云端杀毒的流行,病毒基本上都会加上anti-sandboxes手段来躲避沙箱的探测,在这点上,由于一些原因,最近也一直在做这一块,所以算是总结一下吧. 一:什么是沙箱以及其他: 根据受控环境中的观 ...

  7. 【图论】Self-Assembly(6-19)

    [UVA1572]Self-Assembly 算法入门经典第6章6-19(P172) 题目大意:有一些正方形,每条边上都有A-~Z- A+~Z+的编号,或者00,A+的边可以拼A-,反之亦然.00的边 ...

  8. 【MySQL笔记】触发器,存储过程和函数

    一.触发器 触发器(TRIGGER):是由事件来触发某个操作.当数据库系统执行这些事件时,就会激活触发器执行相应的操作.MySQL从5.0.2版本开始支持触发器. 触发事件:INSERT语句.UPDA ...

  9. Ubuntu中APache+mod_pyhon

    安装apache 1.sudo apt-get install Apache2 Apxs(Apache extension tool既apache扩展模块的工具)的安装: 1.sudo apt-get ...

  10. NHibernate使用MemCache二级缓存

    首先,当然是安装MemCache服务器端了. 然后配置过程,仅仅两个问题. 1.NHibernate要与NHibernate.Cache的版本要一致.否则,NHibernate.Caches.MemC ...