Hibernate从入门到上手(纯java project、Maven版本hibernate)
- Hibernate(orm框架)(开放源代码的对象关系映射框架)
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)的更多相关文章
- hibernate设置二级缓存时报错java.lang.NoClassDefFoundError: org/hibernate/engine/jndi/JndiNameException
错误提示大概意思是,没有类定义错误,就是找不到要使用的hibernate二级缓存管理引擎类.我在这用的是ehcache二级轻量级缓存,报错原因可能是导入的jar包版本和使用的hibernate框架核心 ...
- 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 ...
- hibernate 级联删除报更新失败的问题(org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update)
首先hibernate级联删除的前提是,首先需要在映射文件中配置,配置多表之间的关联关系: 下面以部门表(Dept)和员工表(Emp)为例: 1.在Emp.hbm.xml映射文件中配置many-to- ...
- java三大框架之一hibernate使用入门
综述:Hibernate的作用就是让实体类与数据库映射,使数据持久化,用于替代JDBC,使我们不致于写那么多sql语句代码. 1. 首先在官网www.hibernate.org下载hibernate包 ...
- Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)
Hibernate介绍:Hibernate是一种“对象-关系型数据映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联,在Hibernate中映射文件通常以&qu ...
- Hibernate的入门使用
数据在各个层次之间流转,在流转过程中会发生数据类型转换等一系列的交互问题.java与html的交互解决方案是struts2提供的OGNL(对象导航图语言),而java与数据库之间的技术解决方案是ORM ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结
我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...
- Struts+Spring+Hibernate整合入门详解
Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者: Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念 St ...
- Hibernate基础入门
Hibernate是一个开放源代码的对象关系映射框架,它将POJO与数据库表之间建立映射关系.是全自动的ORM框架,可以自动生成SQL语句并自动执行.它对JDBC进行了非常轻量级的封装,使程序员可以随 ...
随机推荐
- 部署centos6
挂载镜像和导入镜像 mount /dev/cdrom /media ll /media/ cobbler import --path=/media --name=centos6.5--arch=x86 ...
- MySQL的数据引擎讲解
一.MySQL的数据引擎讲解 在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 1.简单介绍这两种引擎,以及该如何去选择. a.Innodb引擎,Innodb引擎提供了对数据 ...
- MyBatis插入时候获取自增主键方法
方法一:(Oralce不支持这种写法) useGeneratedkeys 默认值为 false,含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty ...
- [thinkphp] 无限极分类
<?php /* * 无限极分类 类 */ header("Content-Type: text/html; charset=UTF-8"); Class Category ...
- 字典树&01字典树算法笔记
1]学习了字典树之后,觉得它很明显的就是用空间来换时间,空间复杂度特别大,比如字典数单单存26个小写字母,那么每个节点的孩子节点都有26个孩子节点,字典树中的每一层都保留着不同单词的相同字母. 2]0 ...
- 洛谷P1514 引水入城 [搜索,区间DP]
题目传送门 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每 ...
- 从InitialContext获取数据源
概述 本文介绍如何从javax.naming.InitialContext中获取web容器配置的数据源. 在web开发中,常见的获取数据源的方式是把数据源定义为spring的bean,其他类通过spr ...
- cobol COMP-3最后1位
"C" hex is positive, "D" hex is negative, and "F" hex is unsigned.
- 洛谷P2782 友好城市
题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.没对友好城市都向政府申请在河上开辟一条直线航 ...
- NOIP2005 day1 t1 谁拿了最多奖学金
题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...